我们知道Hive0.14版本之前是不支持行级别的插入,更新,删除的,0.14版本之后可以通过修改相关配置得以支持,但是在不修改默认配置的情况下是不是完全没有办法呢?不是的,这里有个比较简单的方法,前提是表的存储格式为textfile~

以下是例子:

当前表emp

Hive修改行级别数据-LMLPHP

存储格式为textfile

Hive修改行级别数据-LMLPHP

到hdfs中查看数据

Hive修改行级别数据-LMLPHP

将数据下载下来:
$ hdfs dfs -get /user/hive/warehouse/test_db.db/emp/part-m-00000
Hive修改行级别数据-LMLPHP

vi查看数据

Hive修改行级别数据-LMLPHP

可以看到字段间的分隔符为Hive默认的^A(表示为八进制是\001)
 
现在尝试在文本中添加一行记录(注意在linux下输入^A的做法:ctrl-v 再 ctrl-a)
Hive修改行级别数据-LMLPHP

保存退出。
先将hdfs上已有的文件删除
$ hdfs dfs -rm -r /user/hive/warehouse/test_db.db/emp/part-m-000000
再上传
$ hdfs dfs -put part-m-00000 /user/hive/warehouse/test_db.db/emp/
 
好了,到hive cli查看:
Hive修改行级别数据-LMLPHP

数据已经被插入进来啦,可以再试试更新,删除操作。
05-07 11:39
查看更多