pyspark讀取數據


本地文件系統的數據讀寫 spark的工作模式為本地模式

 

因為Spark采用了惰性機制,在執行轉換操作的時候,即使輸入了錯誤的語句,spark-shell也不會馬上報錯(假設word.txt不存在)

從文件中讀取數據創建RDD

ll /root/spark-2.4.3-bin-hadoop2.7/word.txt
-rw-r--r--. 1 root root 45 Apr 9 13:34 /root/spark-2.4.3-bin-hadoop2.7/word.txt

>>> textFile = sc.textFile("file:///root/spark-2.4.3-bin-hadoop2.7/word.txt")
>>> textFile.collect()
['Hadoop is good', 'Spark is fast', 'Spark is better']

把RDD寫入到文本文件中

>>> textFile.saveAsTextFile("file:///opt/writeback")

[root@hdp-node2 writeback]# cd /opt/writeback/
[root@hdp-node2 writeback]# ll
total 8
-rw-r--r--. 1 root root 29 Apr 9 18:00 part-00000
-rw-r--r--. 1 root root 16 Apr 9 18:00 part-00001
-rw-r--r--. 1 root root 0 Apr 9 18:00 _SUCCESS

分布式文件系統HDFS的數據讀寫 spark的工作模式集群模式

從分布式文件系統HDFS中讀取數據,也是采用textFile()方法,可以為textFile()方法提供一個HDFS文件或目錄地址,如果是一個文件地址,它會加載該文件,如果是一個目錄地址,它會加載該目錄下的所有文件的數據

[root@hdp-node2 opt]# hdfs dfs -ls /worddata/
Found 1 items
-rw-r--r-- 3 root hdfs 45 2021-04-09 18:04 /worddata/word.txt

pyspark --master yarn

>>> textFile = sc.textFile("/worddata/")
>>> textFile.collect()
['Hadoop is good', 'Spark is fast', 'Spark is better']

>>> textFile.first()
'Hadoop is good'
>>>

>>> textFile = sc.textFile("hdfs://namespace/worddata/word.txt")
>>> textFile.collect()
['Hadoop is good', 'Spark is fast', 'Spark is better']

同樣,可以使用saveAsTextFile()方法把RDD中的數據保存到HDFS文件中,命令如下:

保存之前保存路徑不能存在

textFile.saveAsTextFile("/datawriteback000")

[root@hdp-node2 ~]# hdfs dfs -ls /datawriteback00/
Found 3 items
-rw-r--r-- 3 root hdfs 0 2021-04-10 09:31 /datawriteback00/_SUCCESS
-rw-r--r-- 3 root hdfs 29 2021-04-10 09:31 /datawriteback00/part-00000
-rw-r--r-- 3 root hdfs 16 2021-04-10 09:31 /datawriteback00/part-00001
[root@hdp-node2 ~]# hdfs dfs -cat /datawriteback00/part-00000
Hadoop is good
Spark is fast


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM