RDD-数据转换

创建一个简单的 RDD,并对其进行一系列转换操作。并加入函数,日志的方式

from pyspark import SparkConf, SparkContext
import logging
logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')

# 初始化 SparkContext
conf = SparkConf().setAppName("FaultToleranceAndCheckpointExample")
sc = SparkContext(conf=conf)


# 创建初始 RDD
rdd1 = sc.parallelize([1, 2, 3, 4, 5, 6], 5)  # 5 个分区
# 对 RDD 进行转换,并设置检查点
rdd2 = rdd1.map(lambda x: x * 2)

# 定义一个函数来执行过滤和保存数据
def process_and_save_data(rdd):
    try:
        # 故意触发错误的过滤器
        def faulty_filter(x):
            if x == 6:  # 触发错误
                print("故意触发的错误")
            return x > 5

        filtered_rdd = rdd.filter(faulty_filter)

        # 继续进行转换
        final_rdd = filtered_rdd.map(lambda x: x + 1)

        # 收集并打印结果
        result = final_rdd.collect()
        logging.info("结果收集完成")
        print("结果:", result)

        # 将结果保存到 HDFS
        output_path = "hdfs://127.0.0.1:9001/data/output2"
        final_rdd.saveAsTextFile(output_path)
        logging.info("结果保存完成")
    except Exception as e:
        logging.error("发生错误:", exc_info=True)
        print("发生错误:", str(e))

# 处理并保存数据
process_and_save_data(rdd2)

# 停止 SparkContext
sc.stop()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值