利用pyspark 读取 S3上数据

    spark = SparkSession.builder.master('local').appName("hxy_test_script").getOrCreate()
    sc = spark.sparkContext
    # s3环境
    sc._jsc.hadoopConfiguration().set("fs.s3a.access.key", 你的s3ID-key)
    sc._jsc.hadoopConfiguration().set("fs.s3a.secret.key", 你的s3SECRET-key)
    sc._jsc.hadoopConfiguration().set("fs.s3a.endpoint", "s3.cn-north-1.amazonaws.com.cn")

    rdd_data = sc.wholetextFile("s3a://要读的bucket_name/text/xxx.txt")  # 举例的,实际情况看自己路径
    print (rdd_data.take(10))

注意:以上只是代码层面,但是运行会有问题,因为spark读取s3文件,

必须要有aws涉及到的两个依赖包:aws-java-sdk-1.7.4.jar,hadoop-aws-2.7.3.jar

当项目里有这两个包了后,提交spark采用如下就可以了:

spark-submit --jars aws-java-sdk-1.7.4.jar,hadoop-aws-2.7.3.jar --master local test_extract_model_spark.py

ps:我的是本地spark,服务器上的:(我的举例如下)============================================

    初始化改为:spark = SparkSession.builder.master('your-spark服务器-url').appName("hxy_test_script").getOrCreate()

提交改为:spark-submit -jars aws-java-sdk-1.7.4.jar,hadoop-aws-2.7.3.jar --master spark://192.168.31.10:7077 --executor-memory 40G --total-executor-cores 20 test_extract_model_spark.py 

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
PySpark中,您可以使用`SparkSession`和`spark.read.text()`函数来读取包含3000万行文本数据的文件。以下是一个示例代码: ```python from pyspark.sql import SparkSession # 创建SparkSession对象 spark = SparkSession.builder.appName("read_large_text_file").getOrCreate() # 读取文本文件 file_path = "/path/to/file.txt" df = spark.read.text(file_path) # 展示前几行数据 df.show(10, truncate=False) # 可以指定展示的行数,truncate=False可以取消截断显示 # 对数据进行进一步处理... ``` 在上述代码中,我们首先创建了一个`SparkSession`对象。然后使用`spark.read.text()`函数读取文本文件,该函数将文件的每一行作为一个字符串加载到DataFrame中。您需要将`file_path`替换为实际的文件路径。 接下来,可以使用DataFrame的操作对数据进行进一步处理。例如,可以使用`df.select()`选择特定的列,使用`df.filter()`过滤数据,或者应用其他转换和操作。 请注意,读取大规模文本数据可能需要一定的时间和资源。如果您的数据量非常大,可以考虑使用分布式文件系统(如Hadoop HDFS)来存储和读取数据,以便更好地利用集群资源。 另外,如果您的数据是结构化的,您还可以考虑使用`spark.read.csv()`或者`spark.read.parquet()`等函数来读取相应格式的文件。这些函数提供了更多的读取选项和优化能力,以适应不同的数据类型和结构。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值