我的情况是:
输入行:
"vijay" <\t> "a-b-c","a-c-d","a-d-c"
"kumar" <\t> "a-b-c","b-c-d""
我创建了如下表:
hive >create table user_infos(name string, path ARRAY<String> --i need array only)
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' COLLECTION ITEMS
TERMINATED BY ',' LINES TERMINATED BY '\n' STORED AS TEXTFILE ;
接收到的输出:
hive > select * from user_infos ;
"vijay" ["**\"a-b-c\"**","**\"a-c-d\"**","**\"a-d-c\"**"]
"kumar" ["**\"a-b-c\"**","**\"b-c-d\"**"]
这里的问题是:我不想要双引号,即\“
所需输出:
vijay ["a-b-c","a-c-d","a-d-c"]
kumar ["a-b-c","b-c-d"]
有什么理由不使用自定义serde来实现这一点吗。在mysql中有没有类似的东西?
1条答案
按热度按时间djmepvbi1#
我还遇到了同样的问题,因为我的字段用双引号括起来,用分号(;)分隔。我的表名是employee1。
所以我用链接搜索,找到了完美的解决方案。
@拉米塞蒂:是的,我们必须使用serde。请使用以下链接下载serde jar:https://github.com/downloads/illyayalovyy/csv-serde/csv-serde-0.9.1.jar
然后使用配置单元提示符执行以下步骤:
然后使用以下查询从给定路径加载数据:
然后运行:
谢谢。