You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在禁用AWS CLI的情况下通过PySpark连接AWS Glue作业与Amazon Keyspaces

如何在AWS Glue中用PySpark连接并操作Amazon Keyspaces(无需AWS CLI)

当然可以实现,以下是两种无需依赖AWS CLI的方案,适配Glue作业的运行环境:

方案一:Spark Cassandra Connector(批量操作首选)

适合大规模数据的读写操作,利用Spark的分布式处理能力:

  • 配置作业依赖:在Glue作业的「作业参数」中添加以下参数,引入兼容的Spark Cassandra Connector(版本需匹配Glue的Spark版本,示例对应Glue 4.0/Spark 3.3):
    --additional-jars com.datastax.spark:spark-cassandra-connector-assembly_2.12:3.4.1
    
  • 编写PySpark代码:通过IAM认证连接Keyspaces(依赖Glue作业关联的IAM角色权限):
    from pyspark.sql import SparkSession
    
    # 初始化Spark会话并配置Keyspaces连接参数
    spark = SparkSession.builder \
        .appName("KeyspacesGlueBatchJob") \
        .config("spark.cassandra.connection.host", "cassandra.us-east-1.amazonaws.com")  # 替换为你的Keyspaces区域端点
        .config("spark.cassandra.connection.port", "9142") \
        .config("spark.cassandra.auth.provider", "com.datastax.oss.driver.api.auth.auth.iam.DefaultAwsAuthProvider") \
        .config("spark.cassandra.connection.ssl.enabled", "true") \
        .getOrCreate()
    
    # 读取Keyspaces表数据
    df = spark.read \
        .format("org.apache.spark.sql.cassandra") \
        .options(table="your_target_table", keyspace="your_keyspace") \
        .load()
    
    # 写入数据到Keyspaces(示例为追加模式,可根据需求改为overwrite等)
    df.write \
        .format("org.apache.spark.sql.cassandra") \
        .options(table="your_target_table", keyspace="your_keyspace") \
        .mode("append") \
        .save()
    
  • 权限配置:给Glue作业关联的IAM角色添加AmazonKeyspacesFullAccess(或更细粒度的自定义策略,指定具体keyspace和操作),无需CLI配置权限。

方案二:Cassandra Python驱动(小批量/单条操作)

适合少量数据的查询、插入或更新操作:

  • 配置作业依赖:在Glue作业的「作业参数」中添加以下参数,自动安装Cassandra Python驱动:
    --additional-python-modules cassandra-driver
    
  • 编写PySpark代码:通过IAM认证直接连接Keyspaces:
    from cassandra.cluster import Cluster
    from cassandra.auth import AwsIamAuthProvider
    
    # 初始化集群连接
    cluster = Cluster(
        contact_points=['cassandra.us-east-1.amazonaws.com'],  # 替换为你的区域端点
        port=9142,
        ssl_context=True,
        auth_provider=AwsIamAuthProvider()
    )
    
    # 连接目标keyspace
    session = cluster.connect('your_keyspace')
    
    # 执行查询
    rows = session.execute("SELECT * FROM your_target_table LIMIT 10")
    for row in rows:
        print(row)
    
    # 执行插入
    session.execute(
        "INSERT INTO your_target_table (id, content) VALUES (%s, %s)",
        (1001, "sample_data")
    )
    
    # 关闭连接
    session.shutdown()
    cluster.shutdown()
    

关键注意事项

  • 替换代码中的区域端点、keyspace名称和表名为你的实际资源;
  • Glue作业的IAM角色必须拥有对应Keyspaces的操作权限,权限配置在IAM控制台完成即可,无需CLI;
  • Spark Cassandra Connector版本需与Glue的Spark版本兼容,可参考官方文档确认对应版本。

内容的提问来源于stack exchange,提问作者Sai Teja

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 16:35:27