使用bash向配置单元脚本发送可变数量的字段
通过使用bash脚本将csv移动到HDFS并在其上构建外部配置单元表,我正在自动化数据管道。目前,只有在.hql文件中预定义了表的格式时,这种方法才有效。但是我希望能够从CSV中读取标题,并将它们作为参数发送到配置单元。因此,目前我在循环中通过文件执行此操作:使用bash向配置单元脚本发送可变数量的字段,bash,hadoop,hive,hiveql,Bash,Hadoop,Hive,Hiveql,通过使用bash脚本将csv移动到HDFS并在其上构建外部配置单元表,我正在自动化数据管道。目前,只有在.hql文件中预定义了表的格式时,这种方法才有效。但是我希望能够从CSV中读取标题,并将它们作为参数发送到配置单元。因此,目前我在循环中通过文件执行此操作: # bash hive -S -hiveconf VAR1=$target_db -hiveconf VAR2=$filename -hiveconf VAR3=$target_folder/$filename -f create_tab
# bash
hive -S -hiveconf VAR1=$target_db -hiveconf VAR2=$filename -hiveconf VAR3=$target_folder/$filename -f create_tables.hql
它被发送到这个
-- hive
CREATE DATABASE IF NOT EXISTS ${hiveconf:VAR1};
CREATE EXTERNAL TABLE IF NOT EXISTS ${hiveconf:VAR1}.${hiveconf:VAR2}(
individual_pkey INT,
response CHAR(1)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ','
LOCATION '/${hiveconf:VAR3}'
我希望蜂巢脚本看起来更像这样
CREATE DATABASE IF NOT EXISTS ${hiveconf:VAR1};
CREATE EXTERNAL TABLE IF NOT EXISTS ${hiveconf:VAR1}.${hiveconf:VAR2}(
${hiveconf:ROW1} ${hiveconf:TYPE1},
... ...
${hiveconf:ROW_N} ${hiveconf:TYPE_N}
ROW FORMAT DELIMITED FIELDS TERMINATED BY ','
LOCATION '/${hiveconf:VAR3}'
是否可以向它发送某种它将要解析的数组?这是可行的还是可取的 我终于想出了解决这个问题的办法 您不能真正编写接受可变字段数的HQL脚本。但是,您可以编写一个bash脚本来生成可变长度的HQL脚本。我已经为我的团队实现了这一点,但总体思路是写出您希望HQL在bash中如何显示为字符串,然后使用类似Rscript的东西读入并识别CSV的数据类型。将数据类型与CSV头一起存储为数组,然后循环遍历这些数组,将信息写入HQL