如何将数据从文件夹导入到Hive,新列作为文件的名称和文件夹的名称?

时间:2015-01-28 10:31:39

标签: hiveql

我有这样的数据输入:

  • 驱动
    • driver_1
      • 1.csv
      • 2.csv
      • ...
    • driver_2
      • 1.csv
      • 2.csv
      • ...
    • ...

csv文件的结构是:

x,y
0.0,0.0
18.6,-11.1
36.1,-21.9
53.7,-32.6
70.1,-42.8
86.5,-52.6

我想将此文件夹中的所有文件加载到Hive表中,如:

id, x, y, file_name, folder_name
1, 0.0, 0.0, 1.csv, driver_1
...

我该怎么办? 有人可以帮帮我吗?

1 个答案:

答案 0 :(得分:2)

Hive有一个名为INPUT__FILE__NAME的{​​{3}},其中包含包含该记录的输入文件的完整路径。然后使用REGEXP_EXTRACT我们可以提取父目录和文件名:

SELECT
    x
  , y
  , REGEXP_EXTRACT(INPUT__FILE__NAME, '.*/(.*)/(.*)', 2) AS file_name
  , REGEXP_EXTRACT(INPUT__FILE__NAME, '.*/(.*)/(.*)', 1) AS folder_name
FROM
    table
;