无法在文本文件 (Spark) 的 RDD 上应用 count() 或 collecr()

Cannot apply count() or collecr() on RDD from textfile(Spark)

我是 Spark 的新手,我有 Databricks Community Edition 帐户。现在我正在做 Lab 并遇到以下错误:

!rm README.md* -f 
!wget https://raw.githubusercontent.com/carloapp2/SparkPOT/master/README.md

textfile_rdd = sc.textFile("README.md")
textfile_rdd.count()

输出:

IllegalArgumentException: Path must be absolute: dbfs:/../dbfs/README.md

默认情况下,wget 会将您的文件下载到 /databricks/driver 您必须将它存储在 DataBricks 文件系统 (dbfs) 中,以便能够使用 -P 选项读取它。请参阅 wget manual 以供参考。 !wget 魔法似乎也创建了一个文件,该文件在 dbfs:/ 路径下不可用。在 Databricks Community 上,!wget 导致找不到您提到的文件。

您可以先在 %sh 单元格中执行以下操作:

%sh
rm README.md* -f 
wget https://raw.githubusercontent.com/carloapp2/SparkPOT/master/README.md -P /dbfs/downloads/

然后在第二个 python 单元格中,您可以通过文件 API 访问该文件(请注意以 file:/

开头的路径
textfile_rdd = sc.textFile("file:/dbfs/downloads/README.md")
textfile_rdd.count()
--2022-02-11 13:48:19--  https://raw.githubusercontent.com/carloapp2/SparkPOT/master/README.md
Resolving raw.githubusercontent.com (raw.githubusercontent.com)... 185.199.111.133, 185.199.110.133, 185.199.109.133, ...
Connecting to raw.githubusercontent.com (raw.githubusercontent.com)|185.199.111.133|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 3624 (3.5K) [text/plain]
Saving to: ‘/dbfs/FileStore/README.md.1’

README.md.1         100%[===================>]   3.54K  --.-KB/s    in 0.001s  

2022-02-11 13:48:19 (4.10 MB/s) - ‘/dbfs/FileStore/README.md.1’ saved [3624/3624]

Out[25]: 98

以下解决方案已在具有 7.1 LTS ML 和 9.1 LTS ML Databricks Runtime 的 Databricks Community Edition 上进行了测试。