【问题标题】:how to extract a column of CSV file in scala spark rdd如何在scala spark rdd中提取一列CSV文件
【发布时间】:2023-04-04 23:14:01
【问题描述】:

假设这些是我的 CSV 文件:

21628000000;21650466094
21697098269;21653506459
21653000000;21624124815
21624124815;21650466094
21650466094;21650466094
21624124815;21697098269
21697098269;21628206459
21628000000;21624124815
21650466094;21628206459
21628000000;21628206459

我想统计第一列出现的次数以获得结果:

(21628000000,4)
(21697098269,2)
(21624124815,2)
(21650466094,2)

我试过了:

object CountOcc {
  def main(args: Array[String]) {
    val conf = new SparkConf()
    .setAppName("Word Count")
    .setMaster("local")

    val sc = new SparkContext(conf)

    //loading text file into textFile object .(RDD)
    val textFile = sc.textFile(args(0))

   //read the line , split the line into words
    val words = textFile.flatMap (line => line.split(";"))
    val cols = words.map(_.trim)
    println(s"${cols(0)}") //error
    cols.foreach(println)
   sc.stop()

  }
}

我收到一个错误org.apache.spark.rdd.RDD错误[String]不带参数

所以我不能生成 cols(0) 或 cols(1),我怎么能只有第一列这样我就可以计算出现次数?

【问题讨论】:

    标签: scala apache-spark


    【解决方案1】:

    试试

    val words = textFile.map (line => line.split(";")(0)).map(p=>(p,1)).reduceByKey(_+_).collect()
    

    【讨论】:

    • 我变了。 flatMap => 地图和分割线为 0
    • 很高兴能帮上忙 :)
    【解决方案2】:

    我试试

    val words = textFile.flatMap (line => line.split(";")(1))
    

    我明白了:

    2
    1
    6
    5
    0
    4
    6
    6
    0
    9
    4
    2
    1
    6
    5
    3
    5
    0
    6
    4
    5
    9
    2
    1
    6.....
    

    【讨论】:

    • 是的。我太傻了——它应该是地图而不是平面地图。我进行了相应的编辑
    • 为什么我得到这个输出,但是当我做映射时它工作正常
    【解决方案3】:

    此 scala 作业将正常打印 CSV 文件的第一列。

    import org.apache.spark.sql.SparkSession
    
    object CountOcc {
      def main(args: Array[String]) {
        val spark = SparkSession.builder()
          .appName("Read CSV")
          .getOrCreate()
    
        val csvDF = spark.read.csv(args(0))
    
        val firstColumnList = csvDF.map( x => x.getString(0))
    
        firstColumnList.foreach(println(_))
    
        spark.close
      }
    }
    

    希望对你有帮助

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-05-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-31
      • 2017-08-01
      相关资源
      最近更新 更多