0

我们无法弄清楚以下问题:我们正在尝试使用 Apache Hudi 将数据保存到存储中。问题是当我们上传一个在依赖项中包含 org.json 包的胖 jar 时,df.save() 应用程序失败了

java.lang.NoClassDefFoundError: org/json/JSONException
    at org.apache.hadoop.hive.ql.parse.SemanticAnalyzer.analyzeCreateTable(SemanticAnalyzer.java:10847)
    at org.apache.hadoop.hive.ql.parse.SemanticAnalyzer.genResolvedParseTree(SemanticAnalyzer.java:10047)
    at org.apache.hadoop.hive.ql.parse.SemanticAnalyzer.analyzeInternal(SemanticAnalyzer.java:10128)
    at org.apache.hadoop.hive.ql.parse.CalcitePlanner.analyzeInternal(CalcitePlanner.java:209)
    at org.apache.hadoop.hive.ql.parse.BaseSemanticAnalyzer.analyze(BaseSemanticAnalyzer.java:227)
    at org.apache.hadoop.hive.ql.Driver.compile(Driver.java:424)
    at org.apache.hadoop.hive.ql.Driver.compile(Driver.java:308)
    at org.apache.hadoop.hive.ql.Driver.compileInternal(Driver.java:1122)
    at org.apache.hadoop.hive.ql.Driver.runInternal(Driver.java:1170)
    at org.apache.hadoop.hive.ql.Driver.run(Driver.java:1059)
    at org.apache.hadoop.hive.ql.Driver.run(Driver.java:1049)
    at org.apache.hudi.hive.HoodieHiveClient.updateHiveSQLs(HoodieHiveClient.java:384)
    at org.apache.hudi.hive.HoodieHiveClient.updateHiveSQLUsingHiveDriver(HoodieHiveClient.java:367)
    at org.apache.hudi.hive.HoodieHiveClient.updateHiveSQL(HoodieHiveClient.java:357)
    at org.apache.hudi.hive.HoodieHiveClient.createTable(HoodieHiveClient.java:262)
    at org.apache.hudi.hive.HiveSyncTool.syncSchema(HiveSyncTool.java:176)
    at org.apache.hudi.hive.HiveSyncTool.syncHoodieTable(HiveSyncTool.java:130)
    at org.apache.hudi.hive.HiveSyncTool.syncHoodieTable(HiveSyncTool.java:94)
    at org.apache.hudi.HoodieSparkSqlWriter$.org$apache$hudi$HoodieSparkSqlWriter$$syncHive(HoodieSparkSqlWriter.scala:321)
    at org.apache.hudi.HoodieSparkSqlWriter$$anonfun$metaSync$2.apply(HoodieSparkSqlWriter.scala:363)
    at org.apache.hudi.HoodieSparkSqlWriter$$anonfun$metaSync$2.apply(HoodieSparkSqlWriter.scala:359)

即使我转到集群库并显式添加依赖项,它仍然无法保存。另一方面,当我刚刚new JSONException("hello")在笔记本中创建时,一切似乎都运行良好。什么可能导致这种行为?谢谢

4

3 回答 3

0

这可能是因为 jar 没有进入执行程序节点,请尝试addJarhttps://spark.apache.org/docs/latest/api/java/org/apache/spark/SparkContext.html#addJar-java。 lang.String- )

于 2020-11-03T23:13:21.977 回答
0

你用的是什么版本的hudi?版本 0.6.0 中的 JSON 存在问题,并且存在未解决的问题。我建议你现在使用 0.5.2 版本。

于 2020-11-11T14:10:49.850 回答
0

事实证明,问题出在 Metastore 服务和 Spark 进程之间的类路径不同,因为它们在单独的 JVM 中运行。该问题已在将 jar 下载到类路径文件夹的初始化脚本中得到解决。

于 2021-01-23T17:27:06.770 回答