StreamingQueryException:由于输入结束而没有要映射的内容

时间:2018-05-21 17:24:02

标签: apache-spark apache-kafka hbase spark-streaming

我正在使用:

  • Spark 2.2(来自HDP 2.6.3)
  • Kafka 1.0.1
  • HBase 1.1.2(来自HDP 2.6.3)
  • shc-core-1.1.2-2.2-s_2.11-SNAPSHOT.jar手动构建 附加的scala类HBaseSinkProvider([链接到github问题] [1])

我想使用此堆栈创建一种实时ETL:Spark Structured Streaming从kafka读取数据并将其写入HBase

代码看起来像这样:

spark \
    .readStream \
    .format('kafka') \
    .option('kafka.bootstrap.servers', 'worker01:9092,worker02:9092,worker03:9092') \
    .option('subscribe', 'youdo') \
    .option('group.id', 'spark') \
    .option('startingOffsets', 'earliest') \
    .option('failOnDataLoss', 'false') \
    .load() \
    .alias('kafka') \
    .withColumn(
        'decoded',
        from_json(
            col('value').cast('string'),
            mes_schema
        )
    ) \
    .select(order) \
    .writeStream \
    .outputMode('append') \
    .format('HBase.HBaseSinkProvider') \
    .option('hbase.catalog', config['solutions']['test']) \
    .option('checkpointLocation', '/dmp/checkpoint') \
    .start()

我总是得到pyspark.sql.utils.StreamingQueryException: u'No content to map due to end-of-input\n at。这意味着什么?

1 个答案:

答案 0 :(得分:0)

在尝试写入HBase之前,您可以尝试显示正在进入的数据流。我怀疑存在json解析错误。另外,你可以分享从流中读取的json。