Spark读取文件系统的数据

文章详细描述了如何在pyspark环境中以及独立Python应用程序中使用pyspark读取Linux本地和HDFS上的文件,进行行数统计。同时提到了在遇到文件不存在的情况时如何创建文件,并探讨了通过spark-submit提交程序时的日志控制和Python环境配置问题。
摘要由CSDN通过智能技术生成

(1)在pyspark中读取Linux系统本地文件“/home/hadoop/test.txt”(如果该文件不存在,请创建并自由添加内容),然后统计出文件的行数;

cat /home/hadoop/test.txt
pyspark
lines = sc.textFile("file:///home/hadoop/test.txt")
line_count = lines.count()
print("Line count:", line_count)

 

(2)在pyspark中读取HDFS系统文件“/user/hadoop/test.txt”(如果该文件不存在,请创建并自由添加内容),然后统计出文件的行数;

hadoop fs -cat /user/hadoop/test.txt
pyspark
lines = sc.textFile("hdfs:///user/hadoop/test.txt")
line_count = lines.count()
print("Line count:", line_count)

 

(3)编写独立应用程序,读取HDFS系统文件“/user/hadoop/test.txt”(如果该文件不存在,请创建并自由添加内容),然后统计出文件的行数;通过 spark-submit 提交到 Spark 中运行程序。

cd /opt/module/spark-3.0.3-bin-without-hadoop/mycode/
touch File_Count.py
vim File_Count.py
from pyspark import SparkConf,SparkContext
conf = SparkConf().setMaster("local").setAppName("File Count")
sc = SparkContext(conf = conf)
lines = sc.textFile("hdfs:///user/hadoop/test.txt")
line_count = lines.count()
print("Line count:", line_count)
sc.stop()
spark-submit File_Count.py

 

 

 总结

  1.  通过比较在pyspark中读取文件的代码和编写独立应用程序读取文件的代码,了解了在启动pyspark的时候,会自动创建一个SparkContext对象,不需要再创建,而在编写独立应用程序读取文件时需要先导入相关模块再创建SparkContext对象。
  2.  编程中也遇到很多问题,如:通过spark-sumbit运行程序时,会产生很多其他信息,执行结果会与其他信息混合在一起显示。可以通过修改log4j的日志显示级别,设置不显示INFO级别的信息,只输出自己的控制台输出的信息。在尝试使用python运行程序时,显示no moudle named pyspark,这时需要vim ~/.bashrc配置环境变量,配置PYTHONPATH环境变量用来在python中引入pyspark库,PYSPARK_PYTHON变量用来设置pyspark运行的python版本,要特别注意/opt/module/spark-3.0.3-bin-without-hadoop/python/lib目录下的py4j-0.10.9-src.zip文件名,在PYTHONPATH的设置中需要使用。
  • 1
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Apache Spark 是一个强大的大数据处理框架,它支持从各种数据源高效地读取数据文件Spark 提供了多种方式来加载数据,包括但不限于: 1. **文本文件**(textFile):这是最基本的文件加载方式,适用于文本格式的数据,如 CSV、Tsv等。例如: ```scala val lines = spark.read.text("path/to/your/textfile.csv") ``` 2. **CSV文件**(csv):Spark也提供了专门读取CSV格式的函数,可以直接解析: ```scala val df = spark.read.format("csv").option("header", "true").load("path/to/csv") ``` 这里设置了`header`为`true`表示第一行是列名。 3. **JSON文件**(json):对于JSON数据,可以直接使用`json`格式加载: ```scala val df = spark.read.json("path/to/jsonfile.json") ``` 4. **Parquet或ORC**:这两种是列式存储格式,用于优化读写性能,尤其适合大量数据: ```scala val df = spark.read.parquet("path/to/parquetfile.parquet") ``` 5. **Hadoop InputFormat**:可以读取HDFS或其他Hadoop支持的文件系统中的数据: ```scala val df = spark.read.format("hadoop").load("hdfs://path/to/data") ``` 6. **JDBC/ODBC**:如果数据存储在数据库中,可以通过连接驱动器加载: ```scala val df = spark.read.format("jdbc").options(Map( "url" -> "jdbc:mysql://url", "dbtable" -> "your_table", "user" -> "username", "password" -> "password" )).load() ``` 在使用这些方法时,记得根据你的数据源和格式选择合适的加载方式,并可能需要调整参数来适应特定的数据格式和需求。如果你有更具体的问题,比如如何连接到特定的数据源,或者关于数据读取的最佳实践,可以继续提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小关不摆烂

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值