通过spark-scala程序访问HDFS

时间:2017-12-02 04:17:36

标签: apache-spark hdfs

我编写了一个简单的程序来加入HDFS中的订单和order_items文件。

我的代码来读取数据:

val orders = sc.textFile ("hdfs://quickstart.cloudera:8022/user/root/retail_db/orders/part-00000")
val orderItems = sc.textFile ("hdfs://quickstart.cloudera:8022/user/root/retail_db/order_items/part-00000")

我得到以下例外:

**Exception in thread "main" java.lang.IllegalArgumentException: Wrong FS: hdfs://quickstart.cloudera:8020/user/root/retail_db, expected: file:///**
你能告诉我这个问题吗?谢谢!

1 个答案:

答案 0 :(得分:2)

您目前正在使用Cloudera Quickstart VM,这很可能意味着您正在运行Spark 1.6,因为这些是可以直接从Cloudera Manager安装的包裹以及CDH 5.x的默认版本

如果是这种情况,Spark on Yarn默认指向HDFS,因此您无需指定 hdfs

只需这样做:

val orderItems = sc.textFile ("/user/cloudera/retail_db/order_items/part-00000")

注意我也改为/ user / cloudera。确保您当前的用户具有权限。

hdfs:// 仅在您使用Spark standalone

时才有效