我已经将一个表导入到 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("\\|");
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句