gpt4 book ai didi

python - 用于将 hive 表加载到 Apache solr 的 Shell 脚本失败

转载 作者:行者123 更新时间:2023-12-03 21:15:48 25 4
gpt4 key购买 nike

我正在编写一个 shell 脚本来将 hive 表中的数据加载到 Apache solr 模式中。

SRC=$1

TGT=$2

SOLR_COLLECTION=$3

SCHEMA=$(python schemaFetch.py ${SRC})

hive -e "ADD JAR /hadoopfs/fs1/dev/solr-hive-serde-3.0.0.jar;
create external table if not exists ${TGT}${SCHEMA}
row format delimited
fields terminated by ','
STORED BY 'com.lucidworks.hadoop.hive.LWStorageHandler'
TBLPROPERTIES('solr.server.url' = 'http://10.165.137.139:8886/solr/',
'solr.collection' = '${SOLR_COLLECTION}',
'solr.query' = '*:*');"

hive -e "insert into ${TGT} select * from ${SRC};"
但它显示了一个运行时异常:

FAILED: RuntimeException org.apache.hadoop.hive.ql.metadata.HiveException: Error in loading storage handler.com.lucidworks.hadoop.hive.LWStorageHandler


然而,架构也在特定的配置单元位置创建,下面列出的插入查询无法从脚本中工作。
hive -e "insert into ${TGT} select * from ${SRC};
我不明白发生了什么。

最佳答案

命令 hive -e "insert into ${TGT} select * from ${SRC};缺少 " .
假设它应该是 hive -e "insert into ${TGT} select * from ${SRC};" ,您可能会遇到 shell globbing 的问题:*正在被您运行命令的文件夹的内容替换。
考虑将命令作为 hive -e "insert into ${TGT} select * from ${SRC};" 运行或者这样做(使用 bash 语法):

set -o noglob
hive -e "insert into ${TGT} select * from ${SRC};"
set +o noglob
第一个命令禁用通配,以便 *不被解释,而第三个恢复它。
您可以在脚本中使用类似的技术来确保 *不会被不恰本地解释。

关于python - 用于将 hive 表加载到 Apache solr 的 Shell 脚本失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53957364/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com