Spark 结构化API——基础操作

Spark 结构化API——基础操作

基本概念

DataFrame:

分布式,表格形式,行和列的集合;每一列的行数必须相同;列有特定的类型,列类型对所有行都一致。

Schema:

定义DataFrame所有列的名字和类型。

以下是如何查询一个结构化数据的schema(spark类型推断):

// in Scala
spark.read.format("json").load("/data/flight-data/json/2015-summary.json").schema

返回schema信息:

org.apache.spark.sql.types.StructType = ...
StructType(StructField(DEST_COUNTRY_NAME,StringType,true),
StructField(ORIGIN_COUNTRY_NAME,StringType,true),
StructField(count,LongType,true))

schema是由StructField组成的StructType,以下是如何定义一个Schema:

// in Scala
import org.apache.spark.sql.types.{StructField, StructType, StringType, LongType}
import org.apache.spark.sql.types.Metadata
val myManualSchema = StructType(Array(
StructField("DEST_COUNTRY_NAME", StringType, true),
StructField("ORIGIN_COUNTRY_NAME", StringType, true),
StructField("count", LongType, false,
Metadata.fromJson("{\"hello\":\"world\"}"))
))

如何使用定义的schema加载数据(不适用scala的类型推断):

val df = spark.read.format("json").schema(myManualSchema)
.load("/data/flight-data/json/2015-summary.json")

Spark数据类型:

ByteType, ShortType, IntegerType, LongType, FloatType, DoubleType, DecimalType, StringType, BinaryType, BooleanType, TimestampType, DataType, ArrayType

column:

用下面的方法引用列,列是否存在只在运行程序时才解析:

// in Scala
import org.apache.spark.sql.functions.{col, c
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值