scala - java.lang.NumberFormatException:对于输入字符串:“|”
问题描述
我已将表导入 HDFS 作为
由“|”终止的字段
sqoop import \
--connect jdbc:mysql://connection \
--username \
--password \
--table products \
--as-textfile \
--target-dir /user/username/productsdemo \
--fields-terminated-by '|'
之后,我尝试使用 spark-shell 版本 1.6.2 将其读取为 RDD
var productsRDD = sc.textFile("/user/username/productsdemo")
并将其转换为数据框
var productsDF = productsRDD.map(product =>{
var o = product.split("|");
products(o(0).toInt,o(1).toInt,o(2),o(3),o(4).toFloat,o(5))
}).toDF("product_id", "product_category_id","product_name","product_description","product_price","product_image" )
但是当我尝试打印输出时,它会抛出以下异常。
java.lang.NumberFormatException:对于输入字符串:“|”
为什么我收到此错误,任何人都可以帮助我解决这个问题吗?
解决方案
split
用于regex
进行拆分字符串,因为|
是正则表达式中的特殊字符意味着OR
您需要在拆分时使用\\|
而不是|
var o = product.split("\\|");
推荐阅读
- javascript - 反应:路由器进程问题
- objective-c - Xcode 错误消息:“'UIAlertAction' 没有可见的@interface 声明选择器....”
- javascript - Highchart 示例在单独的 html 页面中不起作用
- javascript - React:在另一个组件中使用组件
- api - CURL Tableau 休息 API
- javascript - HTML 锚发送请求但不关注链接
- android - iOS 配置文件是否类似于 Android 清单文件
- c# - Azure 服务队列的批处理或取消处理
- python - 如何重新启动 Airflow 网络服务器和调度程序?
- mysql - LEAD 是 MySQL 中的保留字吗?