Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.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
CSV数据源不支持二进制数据类型_Csv_Apache Spark_Apache Kafka_Apache Spark Sql_Spark Structured Streaming - Fatal编程技术网

CSV数据源不支持二进制数据类型

CSV数据源不支持二进制数据类型,csv,apache-spark,apache-kafka,apache-spark-sql,spark-structured-streaming,Csv,Apache Spark,Apache Kafka,Apache Spark Sql,Spark Structured Streaming,我正在尝试运行一个spark流应用程序,它从kafka流中读取数据并进行处理。我正在运行以下程序 val schema = new StructType() .add("InvoiceNo", LongType) .add("StockCode", LongType) .add("Description", StringType) .add("Quantity", ShortType) .add("InvoiceDate", Strin

我正在尝试运行一个spark流应用程序,它从kafka流中读取数据并进行处理。我正在运行以下程序

val schema = new StructType()
      .add("InvoiceNo", LongType)
      .add("StockCode", LongType)
      .add("Description", StringType)
      .add("Quantity", ShortType)
      .add("InvoiceDate", StringType)
      .add("UnitPrice", DoubleType)
      .add("CustomerID", IntegerType)
      .add("Country", StringType)


    val df = spark.readStream.
      format("kafka").
      option("kafka.bootstrap.servers", conf.get("spark.kafka_bootstrap_servers")).
      option("subscribe", "webserver").
      option("kafka.security.protocol", "SASL_SSL").
      option("kafka.sasl.mechanism", "PLAIN").
      option("kafka.ssl.protocol", "TLSv1.2").
      option("kafka.ssl.enabled.protocols", "TLSv1.2").
      option("failOnDataLoss", "false").
      load()
我得到以下错误

Exception in thread "main" org.apache.spark.sql.streaming.StreamingQueryException: CSV data source does not support binary data type.
我在流中提供的csv是

536365,85123A,WHITE HANGING HEART T-LIGHT HOLDER,6,01/12/10 8:26,2.55,17850,United Kingdom

这一错误的原因可能是什么

spark.readStream.format(“kafka”)
总是将数据读取为二进制,而不是字符串

值总是使用ByteArraydSerializer反序列化为字节数组。使用数据帧操作显式反序列化值
-

不清楚您在哪里使用了
.csv()
模式
变量


您可以在

中看到如何实施模式?首先,您必须将卡夫卡消息转换为至少一个字符串。我没有流式CSV的经验,因为这只是卡夫卡的一种糟糕的格式。Json或Avro最有效。例如,您可能希望看到这一点