将多个文件加载到HIVE表中

时间:2017-09-23 00:56:51

标签: hadoop hive hdfs hiveql

看,我试图将太多文件分析到一个HIVE表中。关键见解,我使用json文件和表结构是:

CREATE EXTERNAL TABLE test1
(
STATIONS ARRAY<STRING>,
SCHEMESUSPENDED STRING,
TIMELOAD TIMESTAMP
)
ROW FORMAT SERDE 'org.apache.hive.hcatalog.data.JsonSerDe'
LOCATION '/user/andres/hive/bixihistorical/';

我需要加载大约50个具有相同结构的文件。我尝试过这样的事情:

LOAD DATA  INPATH '/user/andres/datasets/bixi2017/*.json'
OVERWRITE INTO TABLE test1;

LOAD DATA  INPATH '/user/andres/datasets/bixi2017/*'
OVERWRITE INTO TABLE test1;

LOAD DATA  INPATH '/user/andres/datasets/bixi2017/'
OVERWRITE INTO TABLE test1;

上面的任何一个都有用,任何想法的人我应该怎么去? 非常感谢

2 个答案:

答案 0 :(得分:1)

确保文件夹仅包含需要加载到Hive表中的文件。

CREATE EXTERNAL TABLE test1
(
STATIONS ARRAY<STRING>,
SCHEMESUSPENDED STRING,
TIMELOAD TIMESTAMP
)
ROW FORMAT SERDE 'org.apache.hive.hcatalog.data.JsonSerDe'
LOCATION '/user/andres/hive/bixihistorical/';


LOAD DATA INPATH '/user/andres/datasets/bixi2017/'
OVERWRITE INTO TABLE test1;

答案 1 :(得分:0)

我是这样......好吧,我只记得你可以创建一个存储在同一文件夹中的外部表,所有具有相同结构的文件都位于其中。因此,通过这种方式,我将在一次拍摄中加载整个记录。

> CREATE EXTERNAL TABLE bixi_his
> (
> STATIONS ARRAY<STRUCT<id: INT,s:STRING,n:string,st:string,b:string,su:string,m:string,lu:string,lc:string,bk:string,bl:string,la:float,lo:float,da:int,dx:int,ba:int,bx:int>>,
> SCHEMESUSPENDED STRING,
> TIMELOAD BIGINT
> )
> ROW FORMAT SERDE 'org.apache.hive.hcatalog.data.JsonSerDe'
> LOCATION '/user/ingenieroandresangel/datasets/bixi2017/';

感谢