spark获得RDD和DateFrame的方法

本文详细介绍Spark中RDD和DataFrame的创建与转换方法,包括makeRDD、parallelize、textFile等函数的应用,以及如何从HDFS和本地文件系统读取数据。同时,深入探讨了DataFrame的创建方式,如通过SQL、createDataFrame和直接读取JSON、Parquet、CSV文件等。

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

RDD

  • makeRDD
$ val rdd = scc.makeRDD(Seq("value1", "value2", "value3"));
  • parallelize
$ val rdd = sc.parallelize(Seq("value", "value1", "value2"))
  • textFile
// local file
$ val rdd = sc.textFile("file:///home/person1");

// hdfs file
val rdd1 = sc.textFile("hdfs:///user/person")
  • rdd
val df : DataFrame = new HiveContext().sql("select name,id from tmp")
val rdd = df.rdd

DataFrame

  • toDF
$ val df = Seq(
  (1, "First Value", java.sql.Date.valueOf("2018-05-01")),
  (2, "Second Value", java.sql.Date.valueOf("2018-08-01"))
).toDF("int_column", "string_column", "date_column")

val rdd = sc.makeRDD(Seq("xd","das","da")).map(x => (x,1)).toDF("name", "age")
  • sql
$ val hive = new HiveContext(sc)
$ val df = hive.sql("select * from person")
  • createDataFrame
import org.apache.spark.sql.types._
val hive = new HiveContext(sc)
val schema = StructType(Array(
StructField("name", StringType, nullable = false),StructField("age", IntegerType, nulable = false), StructField("code", StringType, nullable=true)
))

val rdd = sc.parallelize(Seq(
Row("name",32"42332"),
Row("name1",42,"4234")
))

val df =hive.createDataFrame(rdd, schema)
  • 直接读取文件
$ val df = sc.read.json("/home/person.json")

$ val df = sc.read.parquet("hdfs:/user/file")
  • 读取csv (spark2.0以上)
val spark = org.apache.spark.sql.SparkSession.builder
        .master("local")
        .appName("Spark CSV Reader")
        .getOrCreate;

val df = spark.read
        .format("com.databricks.spark.csv")
        .option("header", "true") //reading the headers
        .option("mode", "DROPMALFORMED")
        .load("csv/file/path"); //.csv("csv/file/path")
df.show()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值