py脚本模拟json数据,StructuredStreaming接收数据存储HDFS一些小细节 ERROR:‘path‘ is not specified

文章详细描述了如何使用Scala编写脚本来实现实时数据从HDFS读取,使用JSONschema,设置sink路径及checkpoint,以及处理错误的示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

很多初次接触到StructuredStreaming 应该会写一个这样的案例

- py脚本不断产生数据写入linux本地, 通过hdfs dfs 建目录文件来实时存储到HDFS中

1. 指定数据schema: 实时json数据

2. 数据源地址:HDFS

3. 结果落地位置: HDFS

这个小案例重点在于数据传输

- item源码:

    // 1. 创建sparksession
    val spark: SparkSession = SparkSession.builder().appName("HDFS_source")
      .master("local[4]").getOrCreate()


    // 1. 指定data源schema---json
    val schema = new StructType()
      .add("name", dataType = "string")
      .add("age", dataType = "integer")

    // 2.指定源址hdfssource
    val source = spark.readStream
      .schema(schema)
      .json("hdfs://hadoop102:8020/dataset/dataset")

    // 3.结果
    val outputPath = "hdfs://hadoop102:8020/filetmp" // 结果存储路径hdfs
    source.writeStream
      .outputMode(OutputMode.Append())
      .format("json")
      .option("checkpointLocation", "hdfs://hadoop102:8020/checkpoint") // hdfs检查点的位置
      .start(outputPath)
      .awaitTermination()

报错信息:java.lang.IllegalArgumentException: 'path' is not specified

就是没有指定流处理的sink path在start()中传入sink path 即可;

指定checkpointLocation 地址做容错(也就是检查点)

format落地格式 (parquet , json ...)具体场景具体分析

如果只是对数据进行处理然后打印到console 不用指定sink path

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值