spark rdd 和 DF 转换

本文介绍了两种将Spark中的RDD转换为DataFrame的方法:一种是通过反射Inferring the Schema,另一种是Programmatically Specifying the Schema,详细阐述了转换过程,并提及了DataFrame到RDD的转换。
  分类:
 

RDD   -》 DF

 

有两种方式

一、

 

一、Inferring the Schema Using Reflection

 

将 RDD[t]   转为一个 object ,然后 to df

 

val peopleDF = spark.sparkContext
  .textFile("examples/src/main/resources/people.txt")
  .map(_.split(","))
  .map(attributes => Person(attributes(0), attributes(1).trim.toInt))
  .toDF()

 

 

rdd 也能直接装 DATASet  要  import 隐式装换 类 import Spark.implicits._

 如果  转换的对象为  tuple .   转换后  下标为 _1  _2   .....

 

 

 

二、Programmatically Specifying the Schema

 

把 columnt meta  和  rdd   createDataFrame 在一起

 

val peopleRDD = spark.sparkContext.textFile("examples/src/main/resources/people.txt")

// The schema is encoded in a string
val schemaString = "name age"

// Generate the schema based on the string of schema
val fields = schemaString.split(" ")
  .map(fieldName => StructField(fieldName, StringType, nullable = true))
val schema = StructType(fields)

 

val rowRDD = peopleRDD
  .map(_.split(","))
  .map(attributes => Row(attributes(0), attributes(1).trim))

// Apply the schema to the RDD
val peopleDF = spark.createDataFrame(rowRDD, schema)

// Creates a temporary view using the DataFrame
peopleDF.createOrReplaceTempView("people")

 

 

 

 

 

 

DF  to  RDd

 

val tt = teenagersDF.rdd



### 初始化 Spark RDD DataFrame #### 创建 SparkSession 为了初始化 RDD 或 DataFrame,首先需要创建一个 `SparkSession` 实例。这可以通过如下代码完成: ```python from pyspark.sql import SparkSession spark = SparkSession.builder \ .appName("ExampleApp") \ .getOrCreate() ``` #### 初始化 RDD RDD 可以通过多种方式来构建。最常见的方式是从外部存储读取数据或是从现有的 Python 集合中创建。 ##### 从现有列表创建 RDD 下面的例子展示了如何基于本地的 Python 列表创建 RDD: ```python rdd_from_list = spark.sparkContext.parallelize([1, 2, 3, 4]) print(rdd_from_list.collect()) ``` ##### 从文件加载 RDD 如果想要从 HDFS 文件系统中的文本文件创建 RDD,则可以这样做: ```python file_path = "hdfs://path/to/file.txt" rdd_from_file = spark.sparkContext.textFile(file_path) print(rdd_from_file.take(5)) ``` #### 初始化 DataFrame DataFrame 提供了更高层次的数据抽象,并且能够自动推断模式(schema),使得处理结构化数据更为简便。 ##### 使用 toDF 方法将 RDD 转换成 DataFrame 当有一个已经存在的 RDD 并希望将其转换成 DataFrame 时,可以使用 `toDF()` 函数并提供列名作为参数: ```python columns = ["value"] df_from_rdd = rdd_from_list.toDF(columns) df_from_rdd.show() ``` ##### 直接从文件读取 DataFrame 对于 CSV、JSON 等格式化的文件可以直接利用 Spark SQL 的接口读入为 DataFrame: ```python csv_df = spark.read.csv('examples/src/main/resources/people.csv', header=True, inferSchema=True) json_df = spark.read.json('examples/src/main/resources/people.json') parquet_df = spark.read.parquet('examples/src/main/resources/users.parquet') csv_df.printSchema() csv_df.show() json_df.printSchema() json_df.show() parquet_df.printSchema() parquet_df.show() ``` 以上方法提供了不同情境下初始化 RDD DataFrame 的途径[^1][^2]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值