Hive将数据加载到HDFS

时间:2018-05-05 03:29:39

标签: hadoop hive hiveql

我的数据集每行有100多列。问题是如何使用hive将所选列加载到hdfs中。

例如:col1,col2,col3 ... col50,col51 .... col99,col100。我只需要加载选定的列col1,col2,col34和col99。 方法1: 1.加载所有列 2.并根据选定的列创建视图。 方法1 - 我需要加载所有不必要的列,它将在hdfs中消耗更多内存,我还需要编写大查询来指定列 。任何其他最好的方法。

1 个答案:

答案 0 :(得分:1)

HiveHDFS数据顶部提供表格视图。如果您的数据位于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数据库

中的HDFS数据之上创建一个Hive表
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