Spark以反射方式创建DataFrame

package spark.demo.sql

import java.util
import java.util.{ArrayList, List}

import org.apache.spark.sql.types.{DataTypes, StructField, StructType}
import org.apache.spark.sql.{RowFactory, SparkSession}
import org.apache.spark.{ SparkConf, SparkContext }

object RDD2DataFrameReflection {

  def main(args: Array[String]): Unit = {
    
    val conf = new SparkConf().setAppName("Simple Application").setMaster("local[2]")
    val sc = new SparkContext(conf)

    val sparkSession = SparkSession.builder().appName("RDD2DataFrameReflection").enableHiveSupport.getOrCreate()
    val lineRDD = sc.textFile("resources/people.txt")
    val rowsRDD = lineRDD.map(line => {
      val str = line.split(",")
      RowFactory.create(str(0), Integer.valueOf((str(1).trim())))
    })
    println("===============================")
    //rowsRDD.collect()

    val fields = collection.mutable.ListBuffer[StructField]()
    fields += DataTypes.createStructField("name", DataTypes.StringType, true)
    fields += DataTypes.createStructField("age", DataTypes.IntegerType, true)

    val schema = DataTypes.createStructType(fields.toArray)
    schema.printTreeString() 

    val dataSet = sparkSession.createDataFrame(rowsRDD, schema)
    dataSet.createTempView("person")

    val persons = sparkSession.sql("select * from person")
    val rows = persons.collect()

    for (s <- rows) {
      println(s)
    }
    
    
    // /tmp hadoop fs -chmod 777 /tmp  save to hdfs
    persons.write.parquet("hdfs://192.168.1.123:8020/tmp/p.parquet")

  }

}

 

更多代码请参考:https://github.com/hsn999/spark-demo

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值