我正在使用cloudera虚拟机。我已将retail_db
的产品表格作为textfile
与'|'
作为字段分隔符(使用sqoop)导入。java.lang.NumberFormatException:对于输入字符串:“”,同时创建数据帧
以下是表模式:
mysql> describe products;
product_id: int(11)
product_category_id: int(11)
product_name: varchar(45)
product_description: varchar(255)
product_price: float
product_image: varchar(255)
我想创建这个数据的数据帧。
我没有问题,而使用如下代码:
var products = sc.textFile("/user/cloudera/ex/products").map(r => {var p = r.split('|'); (p(0).toInt, p(1).toInt, p(2), p(3), p(4).toFloat, p(5))})
case class Products(productID: Int, productCategory: Int, productName: String, productDescription: String, productPrice: Float, productImage: String)
var productsDF = products.map(r => Products(r._1, r._2, r._3, r._4, r._5, r._6)).toDF()
productsDF.show()
但我得到了NumberFormatException exception
为下面的代码:
case class Products (product_id: Int, product_category_id: Int, product_name: String, product_description: String, product_price: Float, product_image: String)
val productsDF = sc.textFile("/user/cloudera/ex/products").map(_.split("|")).map(p => Products(p(0).trim.toInt, p(1).trim.toInt, p(2), p(3), p(4).trim.toFloat, p(5))).toDF()
productsDF.show()
java.lang.NumberFormatException:对于输入字符串: “”
为什么我在第二个代码甚至t这跟第一个一样吗?
你的输入是什么样的? –
1009 | 45 |钻石恐惧无邪复合弓包|| 599.99 | http://images.acmesports.sports/Diamond+Fear+No+Evil+Compound+Bow+Package 1010 | 46 | DBX矢量系列男士尼龙Life Vest || 19.98 | http://images.acmesports.sports/DBX+Vector+Series+Men%27s+Nylon+Life+Vest – Ela