我希望使用火花结构流从卡夫卡读取数据,并处理它,并写入蜂窝表。
val spark = SparkSession
.builder
.appName("Kafka Test")
.config("spark.sql.streaming.metricsEnabled", true)
.config("spark.streaming.backpressure.enabled", "true")
.enableHiveSupport()
.getOrCreate()
val events = spark
.readStream
.format("kafka")
.option("kafka.bootstrap.servers", "xxxxxxx")
.option("startingOffsets", "latest")
.option("subscribe", "yyyyyy")
.load
val data = events.select(.....some columns...)
data.writeStream
.format("parquet")
.option("compression", "snappy")
.outputMode("append")
.partitionBy("ds")
.option("path", "maprfs:/xxxxxxx")
.start()
.awaitTermination()这确实创建了一个parquet文件,但是我如何将其更改为类似的内容,以便将其写入可使用(select * from)从hive或spark-sql读取的表格式。
data.write.format("parquet").option("compression", "snappy").mode("append").partitionBy("ds").saveAsTable("xxxxxx")发布于 2018-02-07 17:11:40
我会推荐你看看Kafka Connect for writing the data to HDFS。它是开源的,可以使用standalone或作为Confluent Platform的一部分。
为了过滤和转换数据,您可以使用Kafka Streams或KSQL。KSQL运行在Kafka Streams之上,为您提供了一种非常简单的方式来连接数据、过滤数据和构建聚合。
以下是在KSQL中聚合数据流的示例
SELECT PAGE_ID,COUNT(*) FROM PAGE_CLICKS WINDOW TUMBLING (SIZE 1 HOUR) GROUP BY PAGE_IDhttps://stackoverflow.com/questions/48631622
复制相似问题