我在运行从 Spark 2.0.0 中的 Cassandra 读取数据的 Spark 应用程序时遇到了一些麻烦。
我的代码工作如下:
DataFrameReader readerCassandra = SparkContextUtil.getInstance().read()
.format("org.apache.spark.sql.cassandra")
.option("spark.cassandra.connection.host", [DATABASE_IP])
.option("spark.cassandra.connection.port", [DATABASE_PORT]);
final Map<String,String> map = new HashMap<String,String>();
map.put("table", "MyTable");
map.put("keyspace", "MyKeyspace");
public final StructType schema = DataTypes.createStructType(
new StructField[] { DataTypes.createStructField("id", DataTypes.StringType, true),
DataTypes.createStructField("timestamp", DataTypes.TimestampType, true),
DataTypes.createStructField("value", DataTypes.DoubleType, true)
});
final Dataset<Row> dataset = readerCassandra.schema(schema).options(map).load();
dataset.show(false);
我想在集群中运行此代码。我的集群使用 spark-2.0.2-bin-hadoop2.7(http://spark.apache.org/downloads.html 上没有可用的 spark-2.0.0 )。
首先,我使用以下脚本在客户端模式下提交它:
#!/bin/bash
sparkMaster=local[*]
mainClass=package.MainClass
jar=/path/to/myJar-with-dependencies.jar
driverPort=7079
blockPort=7082
deployMode=client
$SPARK_HOME/bin/spark-submit \
--conf "spark.driver.port=${driverPort}"\
--conf "spark.blockManager.port=${blockPort}"\
--class $mainClass \
--master $sparkMaster \
--deploy-mode $deployMode \
--jars /path/to/jars/spark-cassandra-connector_2.11-2.0.0.jar \
$jar
当我这样做时,一切正常。但是现在,我想以集群模式运行我的应用程序。
所以我通过设置sparkMaster我的主 IP 和deployMode“集群”来修改我的提交脚本。
笔记 :
在与我的 Master 同一台机器上只有一个 Worker 的集群时,我仍然有错误。
起初,我使用的是 Spark 2.3.1,并且在集群模式下运行我的代码没有问题(在 中使用 spark-cassandra-connector_2.11-2.3.1.jar --jars)。
我尝试了多个 jars --jars:spark-cassandra-connector_2.11-2.0.0.jar, spark-cassandra-connector_2.11-2.0.2.jar, spark-cassandra-connector_2.11-2.3.1.jar, spark-cassandra-connector-java_2.11-1.5.1.jar,但没有一个工作。
--jars参数中设置了其他一些 jar并考虑在内
Smart猫小萌
相关分类