下面是我的表创建和来自csv的示例;
DROP TABLE IF EXISTS xxx.fbp;
CREATE TABLE IF NOT EXISTS xxx.fbp (id bigint, p_name string, h_name string, ufi int, city string, country string)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'
STORED AS TEXTFILE;
74905,xxx,xyz,-5420642,City One,France
74993,xxx,zyx,-874432,City,Germany
75729,xxx,yzx,-1284248,City Two Long Name,France
然后,使用以下查询将数据加载到配置单元表中:
LOAD DATA
INPATH '/user/xxx/hdfs_import/fbp.csv'
INTO TABLE xxx.fbp;
似乎有数据从第5个csv“列”泄漏到表的第6列。因此,我在“国家/地区”列中看到城市数据。SELECT country, count(country) from xxx.fbp group by country
+---------+------+
| country | _c1 |
| Germany | 1143 |
| City | 1 |
+---------+------+
我不确定为什么偶尔将城市数据导入“国家/地区”列。该csv是从Google表格下载的,并且我已经删除了标题。
最佳答案
原因可能是您的行终止不是'\ n',基于Windows的工具添加了其他字符,这会引起问题。也可能是您使用创建列分隔符的字段。
解:
1.尝试通过“where country = City”子句发出问题的打印行,这将使您了解Hive如何创建记录。
2.尝试二进制存储格式以确保100%由Hive处理的数据。
希望能帮助到你。
关于csv - Hive从CSV导入数据到表中的错误列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56005954/