读取结构化数据

  Spark可以从本地CSV,HDFS以及Hive读取结构化数据,直接解析为DataFrame,进行后续分析。

  读取本地CSV

  需要指定一些选项,比如留header,比如指定delimiter值,用,或者\t或者其他。

  import org.apache.spark.sql.{DataFrame, SparkSession}object ReadCSV { val spark: SparkSession = SparkSession

  .builder()

  .appName(Spark Rocks)

  .master(local[*])

  .getOrCreate() val path: String = /path/to/file/data.csv

  val df: DataFrame = spark.read

  .option(header,true)

  .option(inferSchema,true)

  .option(delimiter,,)

  .csv(path)

  .toDF() def main(args: Array[String]): Unit = {

  df.show()

  df.printSchema()

  }

  }

  读取Hive数据

  SparkSession可以直接调用sql方法,传入sql查询语句即可。返回的DataFrame可以做简单的变化,比如转换

  数据类型,对重命名之类。

  import org.apache.spark.sql.{DataFrame, SparkSession}import org.apache.spark.sql.types.IntegerTypeobject ReadHive { val spark: SparkSession = SparkSession

  .builder()

  .appName(Spark Rocks)

  .master(local[*])

  .enableHiveSupport() // 需要开启Hive支持

  .getOrCreate() import spark.implicits._ //隐式转换

  val sql: String = SELECT col1, col2 FROM db.myTable LIMIT 1000

  val df: DataFrame = spark.sql(sql)

  .withColumn(col1, $col1.cast(IntegerType))

  .withColumnRenamed(col2,new_col2) def main(args: Array[String]): Unit = {

  df.show()

  df.printSchema()

  }

  }

  读取HDFS数据

  HDFS上没有数据无法获取表头,需要单独指定。可以参考databricks的网页。一般HDFS默认在9000端口访问。

  import org.apache.spark.sql.{DataFrame, SparkSession}object ReadHDFS { val spark: SparkSession = SparkSession

  .builder()

  .appName(Spark Rocks)

  .master(local[*])

  .getOrCreate() val location: String = hdfs://localhost:9000/user/zhangsan/test

  val df: DataFrame = spark

  .read

  .format(com.databricks.spark.csv)

  .option(inferSchema,true)

  .option(delimiter,\001)

  .load(location)

  .toDF(col1,col2) def main(args: Array[String]): Unit = {

  df.show()

  df.printSchema()

  }

  }

Spark读取结构化数据的更多相关文章

  1. Spark SQL - 对大规模的结构化数据进行批处理和流式处理

    Spark SQL - 对大规模的结构化数据进行批处理和流式处理 大体翻译自:https://jaceklaskowski.gitbooks.io/mastering-apache-spark/con ...

  2. Spark如何与深度学习框架协作,处理非结构化数据

    随着大数据和AI业务的不断融合,大数据分析和处理过程中,通过深度学习技术对非结构化数据(如图片.音频.文本)进行大数据处理的业务场景越来越多.本文会介绍Spark如何与深度学习框架进行协同工作,在大数 ...

  3. seo之google rich-snippets丰富网页摘要结构化数据(微数据)实例代码

    seo之google rich-snippets丰富网页摘要结构化数据(微数据)实例代码 网页摘要是搜索引擎搜索结果下的几行字,用户能通过网页摘要迅速了解到网页的大概内容,传统的摘要是纯文字摘要,而结 ...

  4. Salesforce开源TransmogrifAI:用于结构化数据的端到端AutoML库

    AutoML 即通过自动化的机器学习实现人工智能模型的快速构建,它可以简化机器学习流程,方便更多人利用人工智能技术.近日,软件行业巨头 Salesforce 开源了其 AutoML 库 Transmo ...

  5. Bigtable:一个分布式的结构化数据存储系统

    Bigtable:一个分布式的结构化数据存储系统 摘要 Bigtable是一个管理结构化数据的分布式存储系统,它被设计用来处理海量数据:分布在数千台通用服务器上的PB级的数据.Google的很多项目将 ...

  6. H5中使用Web Storage来存储结构化数据

    在上一篇对Web Storage的介绍中,可以看到,使用Storage保存key—value对时,key.value只能是字符串,这对于简单的数据来说已经够了,但是如果需要保存更复杂的数据,比如保存类 ...

  7. Bigtable:结构化数据的分布式存储系统

    Bigtable最初是谷歌设计用来存储大规模结构化数据的分布式系统,其可以在数以千计的商用服务器上存储高达PB级别的数据量.开源社区根据Bigtable的设计思路开发了HBase.其优势在于提供了高效 ...

  8. MySQL 5.7:非结构化数据存储的新选择

    本文转载自:http://www.innomysql.net/article/23959.html (只作转载, 不代表本站和博主同意文中观点或证实文中信息) 工作10余年,没有一个版本能像MySQL ...

  9. WordPress插件--WP BaiDu Submit结构化数据插件又快又全的向百度提交网页

    一.WP BaiDu Submit 简介 WP BaiDu Submit帮助具有百度站长平台链接提交权限的用户自动提交最新文章,以保证新链接可以及时被百度收录. 安装WP BaiDu Submit后, ...

随机推荐

  1. 微信小程序 --- 缓存数据

    保存数据  /  读取数据  /  删除数据  /  数据异步操作 每一个微信小程序都可以有自己的本地缓存,可以通过wx.setStorage( wx.setStorageSync) ,wx.getS ...

  2. less常见的操作

    less初体验:     mixin : 混合,将一堆属性从一个规则集到另外一个规则集: (如果有公用的样式,可以做提取:)     清除浮动经典代码:     .clearfix {   displ ...

  3. 通过nginx 访问thinkphp

    修改 nginx的配置文件: location / { root /var/www; index index.html index.htm index.php; if (!-e $request_fi ...

  4. 解决pip install 安装慢问题

    使用豆瓣源 比如安装pyspark pip install -i https://pypi.douban.com/simple/ pyspark 速度就比用pip install快N倍 关注公众号:

  5. freemarker 判断写法

    1.if条件写法:如果data非空则输出:test<#if data?? >test</#if> 2.为空则输出 <#if !(data??) > test < ...

  6. Cat VS Dog---hdu3829(最大独立集)

      题目链接 题意:有n只猫,有m只狗.现在有P个学生去参观动物园.每个孩子有喜欢的动物和不喜欢的动物.假如他喜欢猫那么他就一定不喜欢狗(反之亦然). 如果一个孩子喜欢一个动物,那么这个动物不会被移除 ...

  7. UML Diagrams Using Graphviz Dot

    Introduction Background This article is about using the dot tool from the Graphviz package to automa ...

  8. Flask系列(九)flask-script组件

    Flask Script扩展提供向Flask插入外部脚本的功能,包括运行一个开发用的服务器,一个定制的Python shell,设置数据库的脚本,cronjobs,及其他运行在web应用之外的命令行任 ...

  9. [py]python的深拷贝和浅拷贝

    Python深复制浅复制or深拷贝浅拷贝 简单点说 copy.copy 浅拷贝 只拷贝父对象,不会拷贝对象的内部的子对象. copy.deepcopy 深拷贝 拷贝对象及其子对象 用一个简单的例子说明 ...

  10. 分布式版本管理git学习资料整理推荐

    一.什么是git? Git is a free and open source distributed version control system designed to handle everyt ...