Hadoop HDFS文件夹在键值配置单元表中

Hadoop HDFS文件夹在键值配置单元表中,hadoop,hive,hdfs,hiveql,Hadoop,Hive,Hdfs,Hiveql,我在HDFS中有以下文件夹结构: 多边形 file1.kml file2.kml file3.kml 我想用以下模式将其加载到配置单元表中: 表“多边形”: 如何在蜂巢中实现这一点?据我所知,仅使用蜂巢是不可能的。但是您当然可以使用bash(我想它是一台Linux机器)。首先创建输入文件,例如: #!/bin/bash # the dir path to be passed as parameter for file in $1/* do echo "$(basename

我在HDFS中有以下文件夹结构:

  • 多边形
    • file1.kml
    • file2.kml
    • file3.kml
我想用以下模式将其加载到配置单元表中:

表“多边形”:


如何在蜂巢中实现这一点?

据我所知,仅使用蜂巢是不可能的。但是您当然可以使用
bash
(我想它是一台Linux机器)。首先创建输入文件,例如:

 #!/bin/bash
 # the dir path to be passed as parameter 
 for file in $1/*
    do echo "$(basename $file)|$(cat $file)" >> polygons.dat
 done
向脚本授予执行权限后,按以下方式运行脚本:

 ./script Polygons
现在,您将在
polygons.dat
文件中获得所需的数据。如果它是Windows机器,您必须找到一种方法,使用
batch
script执行相同的操作(我恐怕那时无法提供帮助)

然后使用基本的
Hive
命令进行加载,例如:

 hive> CREATE TABLE Polygons ( name STRING, kml STRING)
     >   ROW FORMAT DELIMITED
     >   FIELDS TERMINATED BY '|'
     >   STORED AS TEXTFILE;

 hive> LOAD DATA LOCAL INPATH 'path/polygons.dat' OVERWRITE INTO TABLE Polygons;

您可以使用输入文件名,它是配置单元中存储文件名的虚拟列

有关此虚拟列的详细信息,请选中此项

您可以将数据加载到一个表中,然后在select查询中,您可以使用INPUT\ U FILE\ U NAME来获取文件名

e、 g

 hive> CREATE TABLE Polygons ( name STRING, kml STRING)
     >   ROW FORMAT DELIMITED
     >   FIELDS TERMINATED BY '|'
     >   STORED AS TEXTFILE;

 hive> LOAD DATA LOCAL INPATH 'path/polygons.dat' OVERWRITE INTO TABLE Polygons;
select INPUT__FILE__NAME,your_column from your_table;