我在hdfs中有以下文件夹结构:多边形文件1.kml文件2.kml文件3.kml我想用以下模式将其加载到配置单元表中:表“多边形”:
name|kml file1|content of file1 file2|content of file2 file3|content of file3
在 hive 里怎么做?
cvxl0en21#
据我所知,仅仅使用 Hive . 但你当然可以利用 bash (我想这是一台linux机器)。首先创建输入文件,例如:
Hive
bash
# !/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 剧本(恐怕到时候我帮不了忙)。然后使用基本的 Hive 加载命令,例如:
polygons.dat
batch
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;
5f0d552i2#
您可以使用输入文件名,它是配置单元中存储文件名的虚拟列有关此虚拟列的详细信息,请查看此链接。您可以将数据加载到表中,然后在select查询中使用input\ U file\ U name获取文件名。例如。,
select INPUT__FILE__NAME,your_column from your_table;
2条答案
按热度按时间cvxl0en21#
据我所知,仅仅使用
Hive
. 但你当然可以利用bash
(我想这是一台linux机器)。首先创建输入文件,例如:将执行权限授予脚本后,按以下方式运行它:
现在您将在
polygons.dat
文件。如果它是一台windows机器,你必须找到一种方法来使用它batch
剧本(恐怕到时候我帮不了忙)。然后使用基本的
Hive
加载命令,例如:5f0d552i2#
您可以使用输入文件名,它是配置单元中存储文件名的虚拟列
有关此虚拟列的详细信息,请查看此链接。
您可以将数据加载到表中,然后在select查询中使用input\ U file\ U name获取文件名。
例如。,