我正在使用:
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
。这意味着什么?
答案 0 :(得分:0)
在尝试写入HBase之前,您可以尝试显示正在进入的数据流。我怀疑存在json解析错误。另外,你可以分享从流中读取的json。