sparksql各种数据源
来源:互联网 发布:mac 4k 显示器 hdmi2 编辑:程序博客网 时间:2024/04/29 05:55
sparksql各种数据源的测试:
大致的有json文件parquet文件,和常用的文件,jdbc等
还有hbase的数据源(还没有贴出,可能要等几天贴出来了)
代码:
一般过程:
第一步创建:利用SparkSeesion进行创建,一般是sparkSeesion.read.format(“格式”).load(“文件路径”)
第二部:进行一般操作
第三部:保存文件,或者保存到其他的地方:一般是sparkSeesion.write.format(“格式”).save(“文件路径”)
package sqlimport org.apache.spark.sql.SparkSessionobject SQLDataSourceExample { case class Person(name: String, age: Long) def main(args: Array[String]) { val spark = SparkSession .builder() .master("local[*]") .appName("Spark SQL data sources example") .config("spark.some.config.option", "some-value") .getOrCreate() /*runBasicDataSourceExample(spark) runBasicParquetExample(spark)*/ runParquetSchemaMergingExample(spark) /* runJsonDatasetExample(spark) runJdbcDatasetExample(spark)*/ spark.stop() } private def runBasicDataSourceExample(spark: SparkSession): Unit = { println("-------------------- runBasicDataSourceExample start -----------------") // $example on:generic_load_save_functions$ val usersDF = spark.read.load("spark_sql/src/main/resources/users.parquet") println("--------------------parquet-----------------") usersDF.printSchema() usersDF.show() usersDF.select("name", "favorite_color").write.save("spark_sql/src/main/resources/result/namesAndFavColors.parquet1") // $example off:generic_load_save_functions$ // $example on:manual_load_options$ println("--------------------json-----------------") val peopleDF = spark.read.format("json").load("spark_sql/src/main/resources/people.json") peopleDF.show() peopleDF.select("name", "age").write.format("parquet").save("spark_sql/src/main/resources/result/namesAndAges.parquet1") println("--------------------直接使用sql-----------------") val sqlDF = spark.sql("SELECT * FROM parquet.`spark_sql/src/main/resources/users.parquet`") sqlDF.show() println("-------------------- runBasicDataSourceExample end -----------------") } private def runBasicParquetExample(spark: SparkSession): Unit = { println("-------------------- runBasicParquetExample start -----------------") import spark.implicits._ val peopleDF = spark.read.json("spark_sql/src/main/resources/people.json") peopleDF.write.parquet("spark_sql/src/main/resource/result/people.parquet") val parquetFileDF = spark.read.parquet("spark_sql/src/main/resource/result/people.parquet") println("-------创建临时表进行sql-------") parquetFileDF.createOrReplaceTempView("parquetFile") val namesDF = spark.sql("SELECT name FROM parquetFile WHERE age BETWEEN 13 AND 19") namesDF.map(attributes => "Name: " + attributes(0)).show() println("-------------------- runBasicParquetExample end -----------------") } private def runParquetSchemaMergingExample(spark: SparkSession): Unit = { println("-------------------- runParquetSchemaMergingExample start -----------------") import spark.implicits._println("---------创建一个普通的dataframe,然后保存为一个square文件------") // Create a simple DataFrame, store into a partition directory val squaresDF = spark.sparkContext.makeRDD(1 to 5).map(i => (i, i * i)).toDF("value", "square") squaresDF.write.parquet("spark_sql/src/main/resource/result/data/test_table_key=1") // Create another DataFrame in a new partition directory, // adding a new column and dropping an existing column val cubesDF = spark.sparkContext.makeRDD(6 to 10).map(i => (i, i * i * i)).toDF("value", "cube") cubesDF.write.parquet("spark_sql/src/main/resource/result/data/test_table_key=2") // Read the partitioned table val mergedDF = spark.read.option("mergeSchema", "true").parquet("data/test_table") mergedDF.printSchema() // The final schema consists of all 3 columns in the Parquet files together // with the partitioning column appeared in the partition directory paths // root // |-- value: int (nullable = true) // |-- square: int (nullable = true) // |-- cube: int (nullable = true) // |-- key: int (nullable = true) // $example off:schema_merging$ } private def runJsonDatasetExample(spark: SparkSession): Unit = { // $example on:json_dataset$ // A JSON dataset is pointed to by path. // The path can be either a single text file or a directory storing text files val path = "examples/src/main/resources/people.json" val peopleDF = spark.read.json(path) // The inferred schema can be visualized using the printSchema() method peopleDF.printSchema() // root // |-- age: long (nullable = true) // |-- name: string (nullable = true) // Creates a temporary view using the DataFrame peopleDF.createOrReplaceTempView("people") // SQL statements can be run by using the sql methods provided by spark val teenagerNamesDF = spark.sql("SELECT name FROM people WHERE age BETWEEN 13 AND 19") teenagerNamesDF.show() // +------+ // | name| // +------+ // |Justin| // +------+ // Alternatively, a DataFrame can be created for a JSON dataset represented by // an RDD[String] storing one JSON object per string val otherPeopleRDD = spark.sparkContext.makeRDD( """{"name":"Yin","address":{"city":"Columbus","state":"Ohio"}}""" :: Nil) val otherPeople = spark.read.json(otherPeopleRDD) otherPeople.show() // +---------------+----+ // | address|name| // +---------------+----+ // |[Columbus,Ohio]| Yin| // +---------------+----+ // $example off:json_dataset$ } private def runJdbcDatasetExample(spark: SparkSession): Unit = { val jdbcDF = spark.read .format("jdbc") .option("url", "jdbc:postgresql:dbserver") .option("dbtable", "schema.tablename") .option("user", "username") .option("password", "password") .load() // $example off:jdbc_dataset$ }}
hbase作为源:稍后补上
0 0
- sparksql各种数据源
- SparkSQL之数据源
- SparkSQL读取数据源
- sparksql json,hive数据源
- SparkSQL的数据源
- SparkSQL配置(HIVE作为数据源)
- SparkSql Data Sources(数据源)
- sparkSQL以JDBC为数据源
- sparksql读取hive数据源配置
- SparkSQL对hive数据源进行操作
- spring 配置各种数据源
- 各种数据源配置
- 第69课:SparkSQL通过Hive数据源实战学习笔记
- SparkSQL编程指南之Java篇二-数据源(上)
- SparkSQL编程指南之Java篇三-数据源(下)
- sparkSQL
- SparkSQL
- SparkSQL
- hdu 4864 Task
- 2016.12.15 接口
- DOM中监听节点变化的事件(变动事件)的用法 — 第13.4.6节
- 88
- 跟小马哥学算法leetcode_13
- sparksql各种数据源
- Lesson 15: SDK文档:Tutorial 4 3D Spaces分析
- Html学习笔记 --- Html与Htm区别与联系
- Android studio运行时闪退找不到错误日志
- 小程序案例-美容预约
- Android从零开搞系列:网络框架系列(1)OkHttp+可测试的服务器URL+Gson分析(上)
- 【BZOJ 1861】[Zjoi2006]Book 书架 splay
- linux中shell变量$#,$@,$0,$1,$2的含义解释
- html