【发布时间】:2018-08-13 19:26:53
【问题描述】:
我从来没有听说过这个,但它发生在这里:
我有一个通过 Scala 中的 sqlContext.sql 操作生成的数据框。 想必它的mysql数据源中应该有12条记录。
当我使用时:
result.show(7)
7个结果正常显示; 当我使用:
result.show(8)
我收到以下错误:
18/03/05 21:02:48 信息 HadoopRDD:输入拆分: hdfs://nn01.itversity.com:8020/user/paslechoix/products/part-m-00000:0+86996 18/03/05 21:02:48 信息 BlockManagerInfo:删除了 broadcast_20_piece0 在 localhost:42892 内存中(大小:2008.0 B,免费:511.1 MB)18/03/05 21:02:48 错误执行程序:阶段 19.0 中的任务 0.0 异常(TID 22) java.lang.NumberFormatException: 空字符串 在 sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:1842) 在 sun.misc.FloatingDecimal.parseFloat(FloatingDecimal.java:122)
如果有人能告诉我这里出了什么问题,将不胜感激?
mysql 的预期结果如下供您参考:
mysql> select * from products where product_name like 'Per%';
+------------+---------------------+--------------------------------------------+---------------------+---------------+----------------------------------------------------------------------------+
| product_id | product_category_id | product_name | product_description | product_price | product_image |
+------------+---------------------+--------------------------------------------+---------------------+---------------+----------------------------------------------------------------------------+
| 362 | 17 | Perfect Fitness Perfect Ab Strap Pro | | 29.99 | http://images.acmesports.sports/Perfect+Fitness+Perfect+Ab+Strap+Pro |
| 365 | 17 | Perfect Fitness Perfect Rip Deck | | 59.99 | http://images.acmesports.sports/Perfect+Fitness+Perfect+Rip+Deck |
| 372 | 17 | Perfect Ab Carver Pro | | 39.99 | http://images.acmesports.sports/Perfect+Ab+Carver+Pro |
| 373 | 17 | Perfect Fitness Multi Gym Pro | | 39.99 | http://images.acmesports.sports/Perfect+Fitness+Multi+Gym+Pro |
| 374 | 17 | Perfect Pushup BASIC | | 19.99 | http://images.acmesports.sports/Perfect+Pushup+BASIC |
| 376 | 17 | Perfect Pushup V2 Performance | | 29.99 | http://images.acmesports.sports/Perfect+Pushup+V2+Performance |
| 377 | 17 | Perfect Pullup Basic | | 19.99 | http://images.acmesports.sports/Perfect+Pullup+Basic |
| 379 | 17 | Perfect Multi-Gym - As Seen on TV! | | 29.99 | http://images.acmesports.sports/Perfect+Multi-Gym+-+As+Seen+on+TV%21 |
| 1013 | 46 | Perception Sport Swifty Deluxe 9.5 Kayak | | 349.99 | http://images.acmesports.sports/Perception+Sport+Swifty+Deluxe+9.5+Kayak |
| 1030 | 46 | Perception Sport Striker 11.5 Angler Kayak | | 499.99 | http://images.acmesports.sports/Perception+Sport+Striker+11.5+Angler+Kayak |
| 1065 | 48 | Perception Sport Swifty Deluxe 9.5 Kayak | | 349.99 | http://images.acmesports.sports/Perception+Sport+Swifty+Deluxe+9.5+Kayak |
| 1093 | 49 | Perception Sport Swifty Deluxe 9.5 Kayak | | 349.99 | http://images.acmesports.sports/Perception+Sport+Swifty+Deluxe+9.5+Kayak |
+------------+---------------------+--------------------------------------------+---------------------+---------------+----------------------------------------------------------------------------+
如果我运行下面的脚本:
val results12 = sqlContext.sql("SELECT * FROM products")
results12.show()
它返回默认的 20 条记录,没有错误。
如果您需要有关错误的额外信息,请告诉我,我会发布完整的错误消息。非常感谢。
更新 1:
如果我这样做:
val result2 = sqlContext.sql("select * from products where productID = 379")
result2.show(1)
我收到以下错误:
java.lang.NumberFormatException: 空字符串
看来问题是由 379 引起的。
我继续 377,show(1) 时出现同样的错误消息。
但是我不明白 377 包含在 result1 中:
val result1 = sqlContext.sql("select * from products where name like 'Per%'")
scala> result1.show(7)
+---------+-----------+--------------------+--------+-----+--------------------+
|productID|productCode| name|quantity|price| image|
+---------+-----------+--------------------+--------+-----+--------------------+
| 362| 17|Perfect Fitness P...| |29.99|http://images.acm...|
| 365| 17|Perfect Fitness P...| |59.99|http://images.acm...|
| 372| 17|Perfect Ab Carver...| |39.99|http://images.acm...|
| 373| 17|Perfect Fitness M...| |39.99|http://images.acm...|
| 374| 17|Perfect Pushup BASIC| |19.99|http://images.acm...|
| 376| 17|Perfect Pushup V2...| |29.99|http://images.acm...|
| 377| 17|Perfect Pullup Basic| |19.99|http://images.acm...|
+---------+-----------+--------------------+--------+-----+--------------------+
only showing top 7 rows
【问题讨论】:
-
有一个
{}按钮可以将一段文本转换为代码块(通过缩进四),这对于 SQL 输出和错误回溯都效果更好。 -
在编辑问题时,别忘了再添加一两个有用的标签。
-
尽量减少你的问题,找到导致问题的一行(假设它是一行),然后查看错误消息,查看该行,看看是否有意义。
-
谢谢你。
-
好多了,你。两个快速的问题可以尝试进一步缩小问题:
标签: scala apache-spark apache-spark-sql