我的数据集每行有100多列。问题是如何使用hive将所选列加载到hdfs中。
例如:col1,col2,col3 ... col50,col51 .... col99,col100。我只需要加载选定的列col1,col2,col34和col99。 方法1: 1.加载所有列 2.并根据选定的列创建视图。 方法1 - 我需要加载所有不必要的列,它将在hdfs中消耗更多内存,我还需要编写大查询来指定列 。任何其他最好的方法。
答案 0 :(得分:1)
Hive
在HDFS
数据顶部提供表格视图。如果您的数据位于HDFS
,则可以在其上创建外部表以引用现有数据。您需要在数据上放置架构。这是一次性工作,然后您可以使用Hive
的所有功能来探索和分析数据集。 Hive
也支持观看。
<强>插图强>
示例数据文件:data.csv
1,col_1a,col1b
2,col_2a,col2b
3,col_3a,col3b
4,col_4a,col4b
5,col_5a,col5b
6,col_6a,col6b
7,col_7a,col7b
加载并验证HDFS中的数据
hadoop fs -mkdir /hive-data/mydata
hadoop fs -put data.csv /hive-data/mydata
hadoop fs -cat /hive-data/mydata/*
1,col_1a,col1b
2,col_2a,col2b
3,col_3a,col3b
4,col_4a,col4b
5,col_5a,col5b
6,col_6a,col6b
7,col_7a,col7b
在default
数据库
CREATE EXTERNAL TABLE default.mydata
(
id int,
data_col1 string,
data_col2 string
)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'
LOCATION 'hdfs:///hive-data/mydata';
查询Hive表
select * from default.mydata;
mydata.id mydata.data_col1 mydata.data_col2
1 col_1a col1b
2 col_2a col2b
3 col_3a col3b
4 col_4a col4b
5 col_5a col5b
6 col_6a col6b
7 col_7a col7b