私はcloudera vmを使用しています。 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:入力文字列の場合: ""
なぜ2番目のコードでも例外が発生していますそれは最初のものと同じですか?
あなたの入力はどのように見えますか? –
1009 | 45 |ダイアモンド恐れなしイービルコンパウンドボウパッケージ|| 599.99 | http://images.acmesports.sports/Diamond+Fear+No+Evil+Compound+Bow+Package 1010 | 46 | DBXベクトルシリーズメンズナイロンライフベスト|| 19.98 | http://images.acmesports.sports/DBX+Vector+Series+Men%27s+Nylon+Life+Vest – Ela