gpt4 book ai didi

java - 使用 gcloud dataproc 创建配置单元表不适用于 unicode 分隔符

转载 作者:行者123 更新时间:2023-12-04 15:07:29 25 4
gpt4 key购买 nike

我需要在 unicode 分隔文件(unicode 字符 - “\uFFFD”,替换字符)上创建一个配置单元表

为此,我们将配置单元作业提交到集群。尝试使用 ROW FORMAT Delimited 的 Lazy simple serde -

gcloud dataproc jobs submit hive --cluster --region --execute "CREATE EXTERNAL TABLE hiveuni_test_01(codesstring,telephone_num string,finding_name string,given_namestring,alt_finding_name string,house_num string,street_namestring,locality string,state string,reserved string,zip_codestring,directive_text string,special_listing_text string,idstring,latitude string,longitude string,rboc_sent_date string) ROWFORMAT DELIMITED FIELDS TERMINATED BY '\uFFFD' LINES TERMINATED BY'\n' STORED AS TEXTFILE LOCATION'gs://hive-idaas-dev-warehouse/datasets/unicode_file';"

但这并不能正确创建表格,整行只放在第一列。

我们使用 cloud SQL mysql server 作为 hive metastore,检查 mysql 也有 utf8 编码。

尝试使用 multidelimitserde -

gcloud dataproc jobs submit hive --clusterdev-sm-35cb3516-ed82-4ec2-bf0d-89bd7e0e60f0 --region us-central1--jars gs://hive-idaas-dev-warehouse/hive-jar/hive-contrib-0.14.0.jar --execute "CREATE EXTERNAL TABLE hiveuni_test_05 (codes string,telephone_num string,finding_name string,given_namestring,alt_finding_name string,house_num string,street_namestring,locality string,state string,reserved string,zip_codestring,directive_text string,special_listing_text string,idstring,latitude string,longitude string,rboc_sent_date string) ROWFORMAT SERDE 'org.apache.hadoop.hive.serde2.MultiDelimitSerDe' WITHSERDEPROPERTIES ('field.delim'='\uFFFD') STORED AS INPUTFORMAT'org.apache.hadoop.mapred.TextInputFormat' OUTPUTFORMAT'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat' LOCATION'gs://hive-idaas-dev-warehouse/datasets/unicode_file';"

这给出了一个异常 - java.lang.ClassNotFoundException: Class org.apache.hadoop.hive.serde2.MultiDelimitSerDe not found

我在集群启动期间放置了一个初始化脚本,它将放置包含类 org.apache.hadoop.hive.serde2 的 hive-contrib-0.14.0.jar/usr/lib/hadoop/lib/ 中的 MultiDelimitSerDe。我看到通过对集群执行 ssh 将 jar 放在文件夹中。

有没有办法在创建表时通过 hive 客户端读取 unicode 字符,或者为什么即使将 jar 放入 hadoop lib 目录后我仍然收到错误 classNotFound?

最佳答案

hive-contrib-0.14.0 没有 org.apache.hadoop.hive.serde2.MultiDelimitSerDe。相反,完整的限定类名称是 org.apache.hadoop.hive.contrib.serde2.MultiDelimitSerDe。注意那里额外的 contrib

因此请更改您的查询以使用正确的完全限定类名,看看是否能解决问题。您可能不必显式添加 hive-contrib jar。它应该已经在 /usr/lib/hive/lib 下。

HIVE-20020HIVE-20619是在 Hive 4.0 上完成的,并且由于您使用的是 Dataproc,所以它不应该适用,因为 Dataproc 还没有 Hive 4.0。

关于java - 使用 gcloud dataproc 创建配置单元表不适用于 unicode 分隔符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65842718/

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