前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Spark系列(二)Spark的数据读入

Spark系列(二)Spark的数据读入

作者头像
张凝可
发布2019-08-22 10:53:40
1.5K0
发布2019-08-22 10:53:40
举报
文章被收录于专栏:技术圈技术圈

真的是超级忙碌的一周,所幸的是我们迎来了新的家庭成员一只小猫咪--大王。取名为大王的原因竟然是因为之前作为流浪猫的日子总是被其他猫所欺负,所以希望他能做一只霸气的霸王猫啦。

言归正传,在周一见的悲伤中唯有写一篇博客才能缓解我的忧伤吧。

Spark读取文本文件--textFile()

  1. def textFile(
  2. path: String,
  3. minPartitions: Int = defaultMinPartitions): RDD[String] = withScope {
  4. assertNotStopped()
  5. hadoopFile(path, classOf[TextInputFormat], classOf[LongWritable], classOf[Text],
  6. minPartitions).map(pair => pair._2.toString).setName(path)
  7. }

参数path为一个string类型,是一个URI,這个URI可以是HDFS、本地文件(全部的节点都可以),或者其他Hadoop支持的文件系统URI返回的是一个字符串类型的RDD,也就是是RDD的内部形式是Iterator[(String)],可以传递参数minPartitions控制分区。

针对SparkContext的textFile方法从读取单个文件、读取多个文件、读取文件目录下的文件以及通配符四个方面介绍textFile()的使用。无论是文件还是文件夹,本地路径加前缀file://,hdfs路径加前缀hdfs://

读取单个文件

代码语言:javascript
复制
val rdd = sc.textFile("File1")

读取多个文件

代码语言:javascript
复制
val rdd = sc.textFile("File1,File2")

读取一个文件夹,目标文件夹为code,也就是说spark读取code文件夹下的文件

代码语言:javascript
复制
val rdd = sc.textFile("file:///home/work/code/")

通配符读取制定文件

读取多个文件夹下的文件(该目录下既包含文件也包含文件夹)

代码语言:javascript
复制
val rdd = sc.textFile("/home/work/code/*/*")

在指定目录下读取文件名以part-开头的文件

代码语言:javascript
复制
val rdd = sc.textFile("/home/work/code/part-*.txt")

Spark读取数据库HBase的数据

由于 org.apache.hadoop.hbase.mapreduce.TableInputFormat 类的实现,Spark 可以通过Hadoop 输入格式访问 HBase。这个输入格式会返回键值对数据,其中键的类型为 org.apache.hadoop.hbase.io.ImmutableBytesWritable,而值的类型为org.apache.hadoop.hbase.client.Result。Result 类包含多种根据列获取值的方法,在其 API 文档(https://hbase.

apache.org/apidocs/org/apache/hadoop/hbase/client/Result.html)中有所描述。

代码语言:javascript
复制
val conf = HBaseConfiguration.create() 
conf.set(TableInputFormat.INPUT_TABLE, "tablename") //确定要扫描HBase数据库的哪张表
代码语言:javascript
复制
val rdd = sc.newAPIHadoopRDD(conf, classOf[TableInputFormat], classOf[ImmutableBytesWritable],classOf[Result])

大王不出门,如何快速的让一只孤僻猫熟悉自己呢?

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018年03月11日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
TDSQL MySQL 版
TDSQL MySQL 版(TDSQL for MySQL)是腾讯打造的一款分布式数据库产品,具备强一致高可用、全球部署架构、分布式水平扩展、高性能、企业级安全等特性,同时提供智能 DBA、自动化运营、监控告警等配套设施,为客户提供完整的分布式数据库解决方案。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档