我们希望以版本不可知的方式为我们的spark作业加载< code > org . Apache . spark:spark-avro _ 2.12 包。
有的人在用火花3.1.2,有的人在用3.2.0。
对于3.1.2上的那些,我需要加载:
org.apache.spark:spark-avro_2.12:3.1.2
对于3.2.0上的,我需要加载:
org.apache.spark:spark-avro_2.12:3.2.0
我是否可以实现一种通用机制来根据火花版本加载正确的jar,而无需我的用户在他们那端做任何事情?
我不介意在本地保存所有版本的jar,并通过--jars
或spark.jars
添加它们。问题是根据用户的火花版本选择正确的jar。
对于完整的上下文,我想将其配置为与< code>pytest-spark一起使用。
这是我在< code>pytest-spark上下文中想到的,尽管应该是普遍适用的:
@pytest.fixture(scope='session')
def spark_session(request, spark_conf):
from pyspark.sql import SparkSession
import pytest_spark
spark_conf = pytest_spark.SparkConfigBuilder().get()
spark_home = pytest_spark.SparkHome(pytest_config=request.config)
spark_version = re.findall('^Spark (\d+\.\d+\.\d+)', spark_home.version)[0]
jars = spark_conf.get('spark.jars.packages')
jars = set(jars.split(',')) if jars else set()
jars.add(f'org.apache.spark:spark-avro_2.12:{spark_version}')
spark_conf.set('spark.jars.packages', ",".join(list(jars)))
session = SparkSession.builder \
.config(conf=spark_conf) \
.getOrCreate()
logger = session.sparkContext._jvm.org.apache.log4j
logger.LogManager.getLogger("org").setLevel(logger.Level.OFF)
logger.LogManager.getLogger("akka").setLevel(logger.Level.OFF)
yield session
session.stop()
我是新来的火花...在阅读基本原理时,一些基本的东西我不清楚:
我试图在所有节点都安装了Java1.7的集群上使用spark-submit运行java spark作业。 作业失败,返回java.lang.UnsupportedClassVersionError:com/WindLogics/DMF/Wether/MyClass:Unsupported Major.Minor版本51.0。 此外,当主机设置为Local时,作业也可以正常工作。如何进行调试和修复此
我现在有一个spark工作,它从HDFS中提取数据,并将数据转换为平面文件,以加载到Cassandra中。
使用databricks spark,可以使用spark雪花连接器(spark-snowflake_2.11-2.3.0.jar,snowflake-jdbc-2.8.1.jar)将数据写入snowflake,而不使用jdbc连接。但如果没有databricks,当我尝试在安装spark的本地机器中应用相同的代码时,我无法使用spark snowflake连接器将代码写入snowflake。我面临
我有一个要求,火花UDF必须超载,我知道UDF超载是不支持火花。因此,为了克服spark的这一限制,我尝试创建一个接受任何类型的UDF,它在UDF中找到实际的数据类型,并调用相应的方法进行计算并相应地返回值。这样做时,我得到一个错误 以下是示例代码: 有可能使上述要求成为可能吗?如果没有,请建议我一个更好的方法。 注:Spark版本-2.4.0
我的情况是,我们目前正在编写一个使用Node的在线应用程序。服务器端的js和WebSocket侦听器。我们有两个不同的部分:一个是服务页面,另一个是使用节点。js和express ejs,另一个是完全不同的应用程序,只包含套接字。用于WebSocket的io库。现在我们来讨论WebSocket部分的可伸缩性问题。 我们发现的一个解决方案是使用redis并在服务器之间共享套接字信息,但由于体系结构的