当前位置: 首页 > 知识库问答 >
问题:

向纱线和远程CDH kerberized env执行spark提交应用程序时出现pyspark hiveContext错误

霍书
2023-03-14

执行时发生错误

airflow@41166b660d82:~$ spark-submit --master yarn --deploy-mode cluster --keytab keytab_name.keytab --principal --jars keytab_name@REALM --jars /path/to/spark-hive_2.11-2.3.0.jar sranje.py

来自不在CDH env中的airflow docker容器(不由CDH CM管理)。斯兰杰。py是简单的从配置单元表中选择*。

应用程序在CDH纱线上被接受并执行两次并出现此错误:

...
2020-12-31 10:11:43 INFO  StateStoreCoordinatorRef:54 - Registered StateStoreCoordinator endpoint
Traceback (most recent call last):
  File "sranje.py", line 21, in <module>
    source_df = hiveContext.table(hive_source).na.fill("")
  File "/dfs/dn4/yarn/nm/usercache/etladmin/appcache/application_1608187067076_0150/container_e29_1608187067076_0150_02_000001/pyspark.zip/pyspark/sql/context.py", line 366, in table
  File "/dfs/dn4/yarn/nm/usercache/etladmin/appcache/application_1608187067076_0150/container_e29_1608187067076_0150_02_000001/pyspark.zip/pyspark/sql/session.py", line 721, in table
  File "/dfs/dn4/yarn/nm/usercache/etladmin/appcache/application_1608187067076_0150/container_e29_1608187067076_0150_02_000001/py4j-0.10.6-src.zip/py4j/java_gateway.py", line 1160, in __call__
  File "/dfs/dn4/yarn/nm/usercache/etladmin/appcache/application_1608187067076_0150/container_e29_1608187067076_0150_02_000001/pyspark.zip/pyspark/sql/utils.py", line 79, in deco
pyspark.sql.utils.IllegalArgumentException: u"Error while instantiating 'org.apache.spark.sql.hive.HiveExternalCatalog':"
2020-12-31 10:11:43 ERROR ApplicationMaster:70 - User application exited with status 1
2020-12-31 10:11:43 INFO  ApplicationMaster:54 - Final app status: FAILED, exitCode: 1, (reason: User application exited with status 1)
...

我们假设缺少“一些. jar和java依赖项”。有什么想法吗?

详细信息

  1. 在执行spark cmd之前,存在有效的krb票证
  2. 如果我们使用jars/path/to/spark-hive\U 2.11-2.3.0。jar,pyhton错误不同
...
pyspark.sql.utils.IllegalArgumentException: u"Error while instantiating 'org.apache.spark.sql.hive.HiveSessionStateBuilder':"
...
# -*- coding: utf-8 -*-
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
from pyspark.context import SparkContext
from pyspark.sql import SparkSession, SQLContext, HiveContext, functions as F
from pyspark.sql.utils import AnalysisException
from datetime import datetime

sc = SparkContext.getOrCreate()
spark = SparkSession(sc)
sqlContext = SQLContext(sc)
hiveContext = HiveContext(sc)

current_date = str(datetime.now().strftime('%Y-%m-%d'))

hive_source = "lnz_ch.lnz_cfg_codebook"
source_df = hiveContext.table(hive_source).na.fill("")

print("Number of records: {}".format(source_df.count()))
print("First 20 rows of the table:")
source_df.show(20)
# -*- coding: utf-8 -*-
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
from pyspark.sql.types import *
from pyspark.sql.functions import *
from pyspark.sql import SparkSession

if __name__ == "__main__":
    spark = SparkSession.builder.appName("ZekoTest").enableHiveSupport().getOrCreate()
    data = spark.sql("SELECT * FROM lnz_ch.lnz_cfg_codebook")
    data.show(20)
    spark.close()

非常感谢。

共有1个答案

太叔景同
2023-03-14

配置单元依赖项通过以下方式解决:

  • 正在下载配置单元。焦油gz与CDH Hive的精确版本
  • 创建了从配置单元/到spark的符号链接/ln-s apache-hive-1.1.0-bin/lib/*。jar spark-2.3.0-bin-without-hadoop/jars/
  • 从maven repo下载到spark/JAR的其他JAR/
hive-hcatalog-core-2.3.0.jar
slf4j-api-1.7.26.jar
spark-hive_2.11-2.3.0.jar
spark-hive-thriftserver_2.11-2.3.0.jar
  • 刷新环境变量
HADOOP_CLASSPATH=$(find $HADOOP_HOME -name '*.jar' | xargs echo | tr ' ' ':')
SPARK_DIST_CLASSPATH=$(hadoop classpath)

beeline工作正常,但Pypark出错

2021-01-07 15:02:20 INFO  StateStoreCoordinatorRef:54 - Registered StateStoreCoordinator endpoint
Traceback (most recent call last):
  File "sranje.py", line 21, in <module>
    source_df = hiveContext.table(hive_source).na.fill("")
  File "/dfs/dn12/yarn/nm/usercache/etladmin/appcache/application_1608187067076_0207/container_e29_1608187067076_0207_01_000001/pyspark.zip/pyspark/sql/context.py", line 366, in table
  File "/dfs/dn12/yarn/nm/usercache/etladmin/appcache/application_1608187067076_0207/container_e29_1608187067076_0207_01_000001/pyspark.zip/pyspark/sql/session.py", line 721, in table
  File "/dfs/dn12/yarn/nm/usercache/etladmin/appcache/application_1608187067076_0207/container_e29_1608187067076_0207_01_000001/py4j-0.10.6-src.zip/py4j/java_gateway.py", line 1160, in __call__
  File "/dfs/dn12/yarn/nm/usercache/etladmin/appcache/application_1608187067076_0207/container_e29_1608187067076_0207_01_000001/pyspark.zip/pyspark/sql/utils.py", line 63, in deco
  File "/dfs/dn12/yarn/nm/usercache/etladmin/appcache/application_1608187067076_0207/container_e29_1608187067076_0207_01_000001/py4j-0.10.6-src.zip/py4j/protocol.py", line 320, in get_return_value
py4j.protocol.Py4JJavaError: An error occurred while calling o31.table.
: java.lang.NoSuchFieldError: METASTORE_CLIENT_SOCKET_LIFETIME

但是,这是另一个问题。谢谢大家。

 类似资料:
  • 我可以从IDE(远程)编程运行这个程序吗?我使用Scala-IDE。我寻找一些代码来遵循,但仍然没有找到合适的 我的环境:-Cloudera 5.8.2[OS redhat 7.2,kerberos 5,Spark2.1,scala 2.11]-Windows 7

  • 在ResourceManager节点上启动flink作业(查找配置文件) 从ResourceManager下载配置文件到本地。 我想,这两种方式都不太好。如何将作业提交到远程纱线集群。有没有合适的办法?

  • 1)谁能解释一下为什么显示的是31GB而不是60GB。2)还有助于为上述参数设置最佳值。

  • 问题内容: 我收到以下异常: com.google.gwt.user.client.rpc.SerializationException:类型“ java.lang.Long”未包含在可以通过此SerializationPolicy进行序列化的类型集中,或者无法加载其Class对象。为了安全起见,此类型将不会序列化 使用GWT 2.1和内置的Jetty服务器。根据文档,此类型肯定是可序列化的…我如

  • 我写这个软件的一个项目作业,但我有麻烦与混合线程和tkinter。下面的部分基本上和预期的一样工作,但是当我关闭它(在Python shell中启动它之后)时,窗口显示一个错误:“Python停止工作”。 我怎样才能解决这个问题?是不是我现在使用的设计造成的?我应该改变它吗? 编辑1:当我删除在中声明,并且只使用引用问题已经解决,但是我需要有对GUI对象的引用,首先要构建GUI,还要从GUI对象获

  • 我有一个Spark应用程序,在本地模式下运行没有问题,但在提交到Spark cluster时出现了一些问题。 错误msg如下: 在上面的代码中,是主类。错误msg说“必须在您的配置中设置主URL”,但我已将“--master”参数提供给。 谁知道如何解决这个问题? Spark版本:1.6.1