gpt4 book ai didi

hadoop - 从在线数据集中将数据加载到 Hive 表后获取 NULL 值

转载 作者:行者123 更新时间:2023-12-02 20:15:10 25 4
gpt4 key购买 nike

我正在尝试使用色调接口(interface)将在线数据集中的数据加载到我的配置单元表中,但我得到的是 NULL 值。
这是我的数据集:
https://www.kaggle.com/psparks/instacart-market-basket-analysis?select=aisles.csv
这是我的代码:

CREATE TABLE IF NOT EXISTS AISLES (aisles_id INT, aisles STRING)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'
STORED AS TEXTFILE
tblproperties("skip.header.line.count"="1");
这是我加载数据的方式:
LOAD DATA LOCAL INPATH '/home/hadoop/aisles.csv' INTO TABLE aisles;
我的解决方法,但不行:
FIELDS TERMINATED BY ','
FIELDS TERMINATED BY '\t'
FIELDS TERMINATED BY ''
FIELDS TERMINATED BY ' '
还尝试删除 LINES TERMINATED BY '\n'这是我下载数​​据的方式:
[hadoop@ip-172-31-76-58 ~]$ wget -O aisles.csv "https://www.kaggle.com/psparks/instacart-market-basket-analysis?select=aisles.csv"
--2020-10-14 23:50:06-- https://www.kaggle.com/psparks/instacart-market-basket-analysis?select=aisles.csv
Resolving www.kaggle.com (www.kaggle.com)... 35.244.233.98
Connecting to www.kaggle.com (www.kaggle.com)|35.244.233.98|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: unspecified [text/html]
Saving to: ‘aisles.csv’
我检查了我创建的表的位置,这就是它所说的;
hdfs://ip-172-31-76-58.ec2.internal:8020/user/hive/warehouse/aisles 
我尝试浏览目录并查看文件的保存位置:
[hadoop@ip-172-31-76-58 ~]$ hdfs dfs -ls /user/hive/warehouse
Found 1 items
drwxrwxrwt - arjiesaenz hadoop 0 2020-10-15 00:57 /user/hive/warehouse/aisles
所以,我试着像这样改变我的加载脚本;
LOAD DATA INPATH '/user/hive/warehouse/aisles.csv' INTO TABLE aisles;
但我得到一个错误:
Error while compiling statement: FAILED: SemanticException line 6:61 Invalid path ''/user/hive/warehouse/aisles.csv'': No files matching path hdfs://ip-172-31-76-58.ec2.internal:8020/user/hive/warehouse/aisles.csv
希望有人可以帮助我查明我的代码的问题。
谢谢。

最佳答案

我在我的 hadoop 集群上尝试了同样的方法。该代码工作没有任何问题。
这是我的执行片段:

    hive> CREATE TABLE IF NOT EXISTS AISLES (aisles_id INT, aisles STRING)
> ROW FORMAT DELIMITED
> FIELDS TERMINATED BY ','
> LINES TERMINATED BY '\n'
> STORED AS TEXTFILE
> tblproperties("skip.header.line.count"="1");
OK
Time taken: 0.034 seconds
hive> load data inpath '/user/hirwuser1448/aisles.csv' into table AISLES;
Loading data to table revisit.aisles
Table revisit.aisles stats: [numFiles=1, totalSize=2603]
OK
Time taken: 0.183 seconds
hive> select * from AISLES limit 10;
OK
1 prepared soups salads
2 specialty cheeses
3 energy granola bars
4 instant foods
5 marinades meat preparation
6 other
7 packaged meat
8 bakery desserts
9 pasta sauce
10 kitchen supplies
Time taken: 0.038 seconds, Fetched: 10 row(s)
我认为您需要交叉检查您的数据集 aisles.csv 是否位于 hdfs 位置而不是存储在本地目录中。
问题在于您的加载 cmd。
LOAD DATA INPATH '/user/hive/warehouse/aisles.csv' INTO TABLE aisles;
我看到您尝试浏览目录以查看保存的文件。你在那个目录下看到 aisles.csv 了吗?如果文件在那里,那么您在加载 cmd 中给出了错误的路径,否则文件根本不存在。

关于hadoop - 从在线数据集中将数据加载到 Hive 表后获取 NULL 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64355042/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com