java.lang.NumberFormatException:对于输入字符串:“|”
java.lang.NumberFormatException: For input string: "|"
我已将 table 作为
导入 HDFS
fields-terminated-by '|'
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("\|");
我已将 table 作为
导入 HDFSfields-terminated-by '|'
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
将其读取为 RDDvar 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("\|");