加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

scala – 如何使用指定的模式创建一个空的DataFrame?

发布时间:2020-12-16 09:38:27 所属栏目:安全 来源:网络整理
导读:我想在Scala中使用指定的模式在DataFrame上创建。我试图使用JSon阅读,我的意思是读取空文件,但我不认为这是最好的做法。 解决方法 假设你想要一个具有以下模式的数据框架: root |-- k: string (nullable = true) |-- v: integer (nullable = false) 您只
我想在Scala中使用指定的模式在DataFrame上创建。我试图使用JSon阅读,我的意思是读取空文件,但我不认为这是最好的做法。

解决方法

假设你想要一个具有以下模式的数据框架:

root
 |-- k: string (nullable = true)
 |-- v: integer (nullable = false)

您只需定义数据帧的模式,并使用空RDD [Row]:

import org.apache.spark.sql.types.{
    StructType,StructField,StringType,IntegerType}
import org.apache.spark.sql.Row

val schema = StructType(
    StructField("k",true) ::
    StructField("v",IntegerType,false) :: Nil)

// Spark < 2.0
// sqlContext.createDataFrame(sc.emptyRDD[Row],schema) 
spark.createDataFrame(sc.emptyRDD[Row],schema)

PySpark等价物几乎相同:

from pyspark.sql.types import StructType,StringType

schema = StructType([
    StructField("k",StringType(),True),StructField("v",IntegerType(),False)
])

# or df = sc.parallelize([]).toDF(schema)

# Spark < 2.0 
# sqlContext.createDataFrame([],schema)
df = spark.createDataFrame([],schema)

使用隐式编码器(仅Scala)与产品类型如Tuple:

import spark.implicits._

Seq.empty[(String,Int)].toDF("k","v")

或案例类:

case class KV(k: String,v: Int)

Seq.empty[KV].toDF

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读