Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache spark 为什么spark submit会以“提交失败”;AnalysisException:kafka不是有效的Spark SQL数据源“;?_Apache Spark_Apache Kafka_Apache Spark Sql_Spark Structured Streaming - Fatal编程技术网

Apache spark 为什么spark submit会以“提交失败”;AnalysisException:kafka不是有效的Spark SQL数据源“;?

Apache spark 为什么spark submit会以“提交失败”;AnalysisException:kafka不是有效的Spark SQL数据源“;?,apache-spark,apache-kafka,apache-spark-sql,spark-structured-streaming,Apache Spark,Apache Kafka,Apache Spark Sql,Spark Structured Streaming,我使用Spark 2.1.0和Kafka 0.10.2.1 我编写了一个Spark应用程序,用于读取卡夫卡主题中的数据集 代码如下: spark-submit \ --verbose \ --jars${echo /home/hduser1/spark/jars/*.jar | tr ' ' ',') \ --packages org.apache.spark:spark-sql-kafka-0-10_2.11:2.10 \ --class com.**** \ --mast

我使用Spark 2.1.0和Kafka 0.10.2.1

我编写了一个Spark应用程序,用于读取卡夫卡主题中的数据集

代码如下:

spark-submit \
  --verbose \
  --jars${echo /home/hduser1/spark/jars/*.jar | tr ' ' ',') \
  --packages org.apache.spark:spark-sql-kafka-0-10_2.11:2.10 \
  --class com.**** \
  --master (Spark Master URL) /path/to/jar 
package.com.example;
导入org.apache.spark.SparkConf;
导入org.apache.spark.api.java.JavaSparkContext;
导入org.apache.spark.sql.SparkSession;
导入org.apache.spark.sql.SQLContext;
导入org.apache.spark.sql.Dataset;
导入org.apache.spark.sql.Row;
公共类MLP{
公共静态void main(字符串[]args){
火花会话火花=火花会话
.builder()
.appName(“MLP”)
.getOrCreate();
数据集df=spark
.读()
.格式(“卡夫卡”)
.option(“kafka.bootstrap.servers”,“localhost:9092,localhost:9093”)
.选项(“订阅”、“结果主题”)
.load();
df.show();
spark.stop();
}
}
我的部署脚本如下所示:

spark-submit \
  --verbose \
  --jars${echo /home/hduser1/spark/jars/*.jar | tr ' ' ',') \
  --packages org.apache.spark:spark-sql-kafka-0-10_2.11:2.10 \
  --class com.**** \
  --master (Spark Master URL) /path/to/jar 
但是我得到了一个错误:

Exception in thread "main" org.apache.spark.sql.AnalysisException:
kafka is not a valid Spark SQL Data Source.;

我已经尝试将同一个应用程序与非Jafka数据源一起使用,并且正确创建了数据帧。我也尝试过在客户端模式下使用Thread,但我得到了相同的错误。

Kafka作为非流数据帧的数据源-数据集将从JIRA的Spark 2.2中提供

正如@JacekLaskowski所提到的,将包更改为(将Jacek的版本修改为使用2.2):

此外,使用
readStream
读取数据流

您不能对流式数据源使用
show
,而是使用
console
格式

StreamingQuery query = df.writeStream()
  .outputMode("append")
  .format("console")
  .start();

query.awaitTermination();

卡夫卡作为非流数据帧的数据源-数据集可从JIRA Spark 2.2获得

正如@JacekLaskowski所提到的,将包更改为(将Jacek的版本修改为使用2.2):

此外,使用
readStream
读取数据流

您不能对流式数据源使用
show
,而是使用
console
格式

StreamingQuery query = df.writeStream()
  .outputMode("append")
  .format("console")
  .start();

query.awaitTermination();

首先,您应该将
--packages org.apache.spark:spark-sql-kafka-0-10_2.11:2.10
(我怀疑它是否有效)替换为以下内容:

--packages org.apache.spark:spark-sql-kafka-0-10_2.11:2.1.1
我认为
2.10版
从未面世。如果您使用了
2.1.0
(而不是
2.10
),您可能会想到
2.1.0

其次,删除spark加载的
--jars${echo/home/hduser1/spark/jars/*.jar | tr'',')
,除了一些额外的jar,比如Kafka源代码


这应该使您能够访问
kafka
源代码格式。

首先,您应该用以下内容替换
--packagesorg.apache.spark:spark-sql-kafka-0-10_2.11:2.10
(我怀疑它是否有效):

--packages org.apache.spark:spark-sql-kafka-0-10_2.11:2.1.1
我认为
2.10
这个版本从来都没有出现过。如果您使用
2.1.0
(而不是
2.10
),您可能已经想到了
2.1.0
)这个版本

其次,删除spark加载的
--jars${echo/home/hduser1/spark/jars/*.jar | tr'',')
,除了一些额外的jar,比如Kafka源代码


这应该可以让你访问
kafka
源代码格式。

就我所知,Spark 2.1中没有用于非流数据集的kafka源代码。是的,请看。因此,部分你的答案是正确的,部分是我的;)但是有人认为我的答案不正确o.OOuch。对了!很抱歉投了反对票。是我。修复了这个问题。Spark 2.1中没有K据我所知,非流式数据集的afka源代码是的,请参阅。因此,部分您的答案是正确的,部分是我的;)但是有人认为我的答案不正确o.OOuch.对!对不起,是我投了反对票。修复了。我没有投反对票:(.我删除了df.show();包括了查询,并包括了要在main()中引发的异常)。但现在我得到了“当流数据帧/数据集上没有流聚合时,不支持完整输出模式;”;卡夫卡“我有一个消费者设置,它轮询主题,并且主题存在。@如果您想使用流数据集或静态?对于静态,您必须将Spark升级到2.2检查
附加
模式:)我没有否决您:(.我删除了df.show();并包含了查询,还包含了要在main()中抛出的异常。但现在我得到了“当流数据帧/数据集上没有流聚合时,不支持完整输出模式;;kafka”我有一个消费者设置,它轮询主题并且它存在。@Suf您想使用流数据集还是静态?对于静态,您必须将Spark升级到2.2Check
append
mode:)