package date_20250422

import org.apache.spark.sql.SparkSession

object JsonToHdfs {
    def main(args: Array[String]): Unit = {
        System.setProperty("HADOOP_USER_NAME", "root")

        // 创建 SparkSession
        val spark = SparkSession.builder()
          .appName("JsonToHdfs")
          .master("local[*]") // 设置本地运行，使用所有可用核心。根据需要调整或移除。
          .getOrCreate()

        // 读取 JSON 文件
        val jsonFilePath = "hdfs://hadoop102:8020/input/data_6/people.json" // 替换为你的 JSON 文件路径
        val df = spark.read.json(jsonFilePath)

        // 注册临时视图以便使用 Spark SQL
        df.createOrReplaceTempView("json_table")

        // 使用 Spark SQL 执行查询
        val queryResultDf = spark.sql("SELECT * FROM json_table") // 这里可以根据需要修改 SQL 查询

        // 显示查询结果
        queryResultDf.show()

        // 将查询结果写入 HDFS
        val hdfsOutputPath = "hdfs://hadoop102:8020/output/data_6/jsonToHdfs" // 替换为你的 HDFS 输出目录
//        queryResultDf.write.mode("append").parquet(hdfsOutputPath) // 使用 append 模式写入，避免覆盖现有数据
        queryResultDf.write.mode("overwrite").parquet(hdfsOutputPath) // 使用 overwrite 模式写入，覆盖现有数据

        // 停止 SparkSession
        spark.stop()
    }
}
