Spark 中 DataFrame的三种创建方式
来源:互联网 发布:淘宝在哪里拿货的 编辑:程序博客网 时间:2024/05/18 06:41
Spark创建DataFrame的三种方法
跟关系数据库的表(Table)一样,DataFrame是Spark中对带模式(schema)行列数据的抽象。DateFrame广泛应用于使用SQL处理大数据的各种场景。创建DataFrame有很多种方法,比如从本地List创建、从RDD创建或者从源数据创建,下面简要介绍创建DataFrame的三种方法。
方法一,Spark中使用toDF函数创建DataFrame
通过导入(importing)Spark sql implicits,就可以将本地序列(seq),数组或者RDD转为DataFrame。只要这些数据的内容能指定、
数据类型即可。
本地seq + toDF创建DataFrame示例:
import sqlContext.implicits._val df = Seq(
(1,"First Value", java.sql.Date.valueOf("2010-01-01")),
(2,"Second Value", java.sql.Date.valueOf("2010-02-01"))
).toDF("int_column","string_column","date_column")
注意:如果直接用toDF()而不指定列名字,那么默认列名为"_1", "_2", ...
通过case class + toDF创建DataFrame的示例
// sc is an existing SparkContext.val sqlContext = new org.apache.spark.sql.SQLContext(sc)// this is used to implicitly convert an RDD to a DataFrame.import sqlContext.implicits._
// Define the schema using a case class.// Note: Case classes in Scala 2.10 can support only up to 22 fields. To work around this limit,// you can use custom classes that implement the Product interface.case class Person(name:String, age:Int)
// Create an RDD of Person objects and register it as a table.val people = sc.textFile("examples/src/main/resources/people.txt").map(_.split(",")).map(p => Person(p(0), p(1).trim.toInt)).toDF()
people.registerTempTable("people")
// 使用 sqlContext 执行 sql 语句.val teenagers = sqlContext.sql("SELECT name FROM people WHERE age >= 13 AND age <= 19")
// 注:sql()函数的执行结果也是DataFrame,支持各种常用的RDD操作.// The columns of a row in the result can be accessed by ordinal.
teenagers.map(t =>"Name: " + t(0)).collect().foreach(println)
方法二,Spark中使用createDataFrame函数创建DataFrame
在SqlContext中使用createDataFrame也可以创建DataFrame。跟toDF一样,这里创建DataFrame的数据形态也可以是本地数组或者RDD。
通过row+schema创建示例
import org.apache.spark.sql.types._val schema = StructType(List(
StructField("integer_column",IntegerType, nullable =false),
StructField("string_column",StringType, nullable =true),
StructField("date_column",DateType, nullable =true)
))
val rdd = sc.parallelize(Seq(
Row(1,"First Value", java.sql.Date.valueOf("2010-01-01")),
Row(2,"Second Value", java.sql.Date.valueOf("2010-02-01"))
))val df = sqlContext.createDataFrame(rdd, schema)
方法三,通过文件直接创建DataFrame
使用parquet文件创建
val df = sqlContext.read.parquet("hdfs:/path/to/file")
使用json文件创建
val df = spark.read.json("examples/src/main/resources/people.json")
// Displays the content of the DataFrame to stdout
df.show()// +----+-------+// | age| name|// +----+-------+// |null|Michael|// | 30| Andy|// | 19| Justin|// +----+-------+
使用csv文件,spark2.0+之后的版本可用
//首先初始化一个SparkSession对象val spark = org.apache.spark.sql.SparkSession.builder
.master("local")
.appName("Spark CSV Reader")
.getOrCreate;
//然后使用SparkSessions对象加载CSV成为DataFrameval 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") //spark 2.0 api
df.show()
写的不好,请多多发表意见!!!!!!
- Spark 中 DataFrame的三种创建方式
- Spark将RDD转换成DataFrame的两种方式
- Spark将RDD转换成DataFrame的两种方式
- Spark RDD/DataFrame map保存数据的两种方式
- spark rdd转dataframe的两种方式
- Spark中RDD转换成DataFrame的两种方式(分别用Java和scala实现)
- Spark中RDD转换成DataFrame的两种方式(分别用Java和scala实现)
- SQL中的DataFrame的两种创建方式。
- spark 中rdd与dataframe的合并
- Spark与Pandas中DataFrame的对比
- Spark中DataFrame的schema讲解
- Spark SQL中DataFrame API 的解析
- spark中创建RDD的方式
- spark中RDD、DataFrame创建及互相转换
- Spark DataFrame创建与操作
- Spark dataframe创建&操作总结
- spark dataframe创建和操作
- RDD转换为DataFrame的两种方式及spark sql的简单实例
- powermock mock 静态类,静态属性
- 星环一站式大数据平台-4.6
- aliyun短信服务,php采用示例代码报Can not find endpoint to access
- 如何在maven里配置使用本地修改的代码
- How To Install Linux, Apache, MySQL, PHP (LAMP) stack on Ubuntu 16.04
- Spark 中 DataFrame的三种创建方式
- java锁
- 词向量源码解析:(5.2)ngram2vec源码解析之uni_uni
- Collections.sort(nums)--对List集合中的元素进行排序
- apicloud git-svn 地址冲突,导致代码管理功能不可用.这个问题是由 windows 系统自身DLL加载机制引起的.一般重启电脑即可解决
- 不要过度依赖JQuery(二)
- Spinner的使用
- shell 之awk学习
- MVC @Html.Raw()释意与用法