Spark 读取CSV 解析单元格多行数值问题
来源:互联网 发布:基金投资组合 知乎 编辑:程序博客网 时间:2024/06/07 23:22
CSV 样例数据
[hadoop@ip-10-0-52-52 ~]$ cat test.csv id,name,address1,zhang san,china shanghai2,li si,"chinabeijing"3,tom,china shanghai
Spark 2.2 以下版本读取 CSV
会存在读取异常问题
scala> val df1 = spark.read.option("header", true).csv("file:///home/hadoop/test.csv")df1: org.apache.spark.sql.DataFrame = [id: string, name: string ... 1 more field]scala> df1.countres4: Long = 4scala> df1.show+--------+---------+--------------+| id| name| address|+--------+---------+--------------+| 1|zhang san|china shanghai|| 2| li si| china||beijing"| null| null|| 3| tom|china shanghai|+--------+---------+--------------+
遇到该问题也是可以通过读取二进制文件来解决的, 但这不是好的方案,例如下面Pyspark 实现:
def spark_read_csv_bf(spark, path, schema=None, encoding='utf8'): ''' :param spark: spark 2.0 sparkSession :param path: csv path :param encoding: :return: DataFrame ''' rdd = spark.sparkContext.binaryFiles(path).values()\ .flatMap(lambda x: csv.DictReader(io.BytesIO(x)))\ .map(lambda x : { k:v.decode(encoding) for k,v in x.iteritems()}) if schema: return spark.createDataFrame(rdd, schema) else: return rdd.toDF()
Spark 2.2 之后版本 读取 CSV
spark 2.2之后的版本对该bug 进行修复, 具体的实现可以去看下, 通过在函数调用时添加参数 multiLine 解决了该问题, 参考链接:
[SPARK-19610][SQL] Support parsing multiline CSV files
[SPARK-20980] [SQL] Rename wholeFile
to multiLine
for both CSV and JSON
scala> val df2 = spark.read.option("header", true).option("multiLine", true).csv("file:///home/hadoop/test.csv")df2: org.apache.spark.sql.DataFrame = [id: string, name: string ... 1 more field]scala> df2.countres6: Long = 3scala> df2.show+---+---------+--------------+| id| name| address|+---+---------+--------------+| 1|zhang san|china shanghai|| 2| li si| chinabeijing|| 3| tom|china shanghai|+---+---------+--------------+
阅读全文
0 0
- Spark 读取CSV 解析单元格多行数值问题
- Spark读取csv数据
- spark读取csv文件
- spark 读取CSV文件
- CSV读取解析,导出
- 读取csv文件快速返回行数
- Spark创建DataFrame和读取CSV数据文件
- spark读取csv文件——scala
- Spark创建DataFrame和读取CSV数据文件
- super csv 写入csv 默认单元格没有引号问题
- poi读取行数的问题
- BufferedReader的读取行数问题
- pandas读取csv编码问题
- java正则解析读取csv文件
- Spark数据读取格式解析
- 导出csv格式,一个单元格内容包含“逗号”,“双引号”问题
- PHP读取CSV出现了问题
- php 读取csv大文件问题
- 软件策划流程
- Css-基础
- Deeplearning-吴恩达-卷积神经网络-第二周作业01-Convolution Networks(keras)
- Python学习笔记(基础学习)
- Android PopupWindow实现带背景阴影的下滑选择框
- Spark 读取CSV 解析单元格多行数值问题
- 【实战】android的多线程下载
- android 路由框架搭建
- Spring整合ElasticJob 关闭Tomcat容器时内存泄漏
- Hdu 6240 01分数规划
- JSONObject类之解析json
- Mysql语句注意事项
- 调用函数求数组中的元素和,并统计数组中奇数的个数
- CentOS5.5使用yum时报错Error: Cannot find a valid baseurl for repo: addons