sparksql之通过 structType 创建 DataFrames(编程接口)

import org.apache.avro.generic.GenericData.StringType
import org.apache.spark.rdd.RDD
import org.apache.spark.sql.types.{IntegerType, StructField, StructType}
import org.apache.spark.sql.{DataFrame, Row, SQLContext}
import org.apache.spark.{SparkConf, SparkContext}
import org.spark_project.dmg.pmml.True

object TestDataFrame2 {
  def main(args: Array[String]): Unit = {
    val conf=new SparkConf().setAppName("TestDataFrame2").setMaster("local")
    val sc=new SparkContext(conf)
    val SQLContext=new SQLContext(sc)
    //将本地的数据读入RDD
    val fileRDD=sc.textFile("D:\\Users\\shashahu\\Desktop\\work\\spark-2.4.4\\examples\\src\\main\\resources\\people.txt")
    //将RDD数据映射成Row,需要import org.apache.spark.sql.row
    val rowRDD:RDD[Row]=fileRDD.map(line=>{
      val fields=line.split(",")
      Row(fields(0),fields(1).trim.toInt)
    })

    //创建StructType来定义结构
    val structType: St
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
DataFrame和Dataset都可以通过以下方式创建: 1. 从本地文件读取数据 2. 从数据库中读取数据 3. 从RDD转换而来 举例: 1. 从本地文件读取数据创建DataFrame: ``` from pyspark.sql import SparkSession spark = SparkSession.builder.appName("create_dataframe").getOrCreate() df = spark.read.csv("path/to/file.csv", header=True, inferSchema=True) ``` 2. 从本地文件读取数据创建Dataset: ``` from pyspark.sql import SparkSession from pyspark.sql.types import StructType, StructField, StringType, IntegerType spark = SparkSession.builder.appName("create_dataset").getOrCreate() schema = StructType([ StructField("name", StringType(), True), StructField("age", IntegerType(), True), StructField("gender", StringType(), True) ]) df = spark.read.csv("path/to/file.csv", header=True, schema=schema) ds = df.as[Person] ``` 3. 从RDD转换而来创建DataFrame: ``` from pyspark.sql import SparkSession from pyspark.sql.types import StructType, StructField, StringType, IntegerType spark = SparkSession.builder.appName("create_dataframe_from_rdd").getOrCreate() rdd = spark.sparkContext.parallelize([(1, "John"), (2, "Jane"), (3, "Bob")]) schema = StructType([ StructField("id", IntegerType(), True), StructField("name", StringType(), True) ]) df = spark.createDataFrame(rdd, schema) ``` 4. 从RDD转换而来创建Dataset: ``` from pyspark.sql import SparkSession from pyspark.sql.types import StructType, StructField, StringType, IntegerType spark = SparkSession.builder.appName("create_dataset_from_rdd").getOrCreate() rdd = spark.sparkContext.parallelize([(1, "John"), (2, "Jane"), (3, "Bob")]) schema = StructType([ StructField("id", IntegerType(), True), StructField("name", StringType(), True) ]) df = spark.createDataFrame(rdd, schema) ds = df.as[Person] ```

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值