package date_20250422

import org.apache.spark.sql.SparkSession

object CsvSorter {
    def main(args: Array[String]): Unit = {

        System.setProperty("HADOOP_USER_NAME", "root")

        // 创建 SparkSession
        val spark = SparkSession.builder()
          .appName("CSV Sorter")
          .master("local[*]") // 使用本地模式，根据需要可以更改成集群模式
          .getOrCreate()

        // 读取 CSV 文件
        val csvFilePath = "hdfs://hadoop102:8020/input/data_6/person.csv" // 替换为你的 CSV 文件路径
        val df = spark.read
          .option("header", "false") // CSV 文件没有头部，因此设置为 false
          .option("inferSchema", "true") // 自动推断列的数据类型
          .csv(csvFilePath)
          .toDF("id", "name", "age") // 指定列名

        // 注册临时视图以便使用 Spark SQL
        df.createOrReplaceTempView("csv_table")
        
        // 使用 Spark SQL 进行排序
        val sortedDf = spark.sql("SELECT * FROM csv_table ORDER BY name ASC")

        // 显示排序后的结果
        sortedDf.show()

        sortedDf.select("id", "name", "age")
          .write.save("hdfs://hadoop102:8020/output/data_6/user_sort")

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