博客
关于我
spark1.6使用:读取本地外部数据,把RDD转化成DataFrame,保存为parquet格式,读取csv格式
阅读量:526 次
发布时间:2019-03-07

本文共 1435 字,大约阅读时间需要 4 分钟。

Hadoop和Spark操作指南

启动Hadoop和Spark是数据处理的基础,以下步骤将帮助您顺利完成操作。

启动Spark

在终端中输入以下命令启动Spark:

spark-shell --master local[2] --jars /usr/local/src/spark-1.6.1-bin-hadoop2.6/libext/com.mysql.jdbc.Driver.jar

这一步需要确保Spark及其依赖已经正确安装,特别是若链接到MySQL数据库,必须添加对应的JAR。

读取Spark日志

将Spark目录下的日志文件读取进来进行测试:

val alllog=sc.textFile("file:///usr/local/src/spark-1.6.1-bin-hadoop2.6/logs/*out*")

验证记录数量:

alllog.count

注意:记得检查所选日志目录路径是否正确。

将 RDD转换为DataFrame

将读取到的RDD格式数据转换为DataFrame:

import org.apache.spark.sql.Rowval alllogRDD = alllog.map(x => Row(x))import org.apache.spark.sql.types._val schemaString = "line"val schema = StructType(  schemaString.split(" ").map(fieldName => StructField(fieldName, StringType(), true)))val alllogDataFrame = sqlContext.createDataFrame(alllogRDD, schema)

注册表并打印Schema:

alllogDataFrame.registerTempTable("log")alllogDataFrame.printSchema

显示DataFrame内容:

alllogDataFrame.show(false)

使用SQL查询

将DataFrame转换为临时表后,便可以使用SQL查询:

sqlContext.sql("SELECT * FROM log").show()

此时可以对表进行增删改查操作,方便数据处理。

读取与存储外部数据源

读取JSON文件

读取特定文件夹下的JSON文件:

val df = sqlContext.read.format("json").load("file:///mnt/hgfs/vm/china.json")df.printSchema

保存结果:

df.select("*").write.format("parquet").mode("overwrite").save("file:///mnt/hgfs/vm/china.parquet")

处理嵌套数组

对于包含嵌套数组的JSON文件,可以使用SQL的explode函数展开数据:

val exploded_df = sqlContext.sql("SELECT explode(array_column, ',') as column, value FROM parquet.`examples/src/main/resources/users.parquet`")exploded_df.show(false)

转载地址:http://osmjz.baihongyu.com/

你可能感兴趣的文章
Python变量命名方法-ChatGPT4o作答
查看>>
Python变量与运算符
查看>>
Python变量/运算符/函数/模块/string
查看>>
python发送邮件的时候出现 error (535, b‘5.7.3 Authentication unsuccessful‘) 解决方法
查看>>
python系列【仅供参考】:python flask框架 debug功能
查看>>
python发送notes邮件_使用python在Lotus Notes中发送邮件
查看>>
Python双版本下创建一个Scrapy(西瓜皮)项目
查看>>
Python双版本下No module named 'requests'
查看>>
python及pycharm2018软件安装教程
查看>>
python去重txt文本_Python实现的txt文件去重功能示例
查看>>
python去掉列表的逗号,从Python列表项中删除标点符号
查看>>
Python卸载所有包
查看>>
python单线程下实现多个socket并发
查看>>
Python单元测试框架介绍(超详细~)
查看>>
Python单元测试框架
查看>>
python单元测试之unittest
查看>>
Python单元测试unittest实战
查看>>
Python单元测试-模拟VS补丁
查看>>
python协程实时输出_Python 协程以及事件循环的问题,怎么知道 IO 读取结束了呢?...
查看>>
Python十进制&;包提供错误的结果
查看>>