代码之家  ›  专栏  ›  技术社区  ›  user3521180

执行python文件时使用spark submit的CLI参数

  •  0
  • user3521180  · 技术社区  · 7 年前

    from pyspark import SparkContext
    sc = SparkContext("local", "Simple App")
    from pyspark.sql import SQLContext, Row
    sqlContext = SQLContext(sc)
    
        df = sqlContext.read.format("jdbc").option("url","jdbc:sqlserver://server:port").option("databaseName","database").option("driver","com.microsoft.sqlserver.jdbc.SQLServerDriver").option("dbtable","table").option("user","uid").option("password","pwd").load()
    
        df.registerTempTable("test")
        df.write.format("com.databricks.spark.csv").save("full_path")
    

    因此,如果我想转换多个表,我需要编写多个数据帧。因此,为了避免这种情况,我想在通过for循环对数据帧进行迭代时,从用户那里获取数据库名和表名的命令行参数。

    有可能吗?如果是的话,有人能指导我如何通过spark提交吗?

    1 回复  |  直到 7 年前
        1
  •  5
  •   Rahul Gupta    7 年前

    只需对spark submit命令和代码进行以下更改:

    测验py公司

    import sys
    from pyspark import SparkContext
    sc = SparkContext("local", "Simple App")
    from pyspark.sql import SQLContext, Row
    sqlContext = SQLContext(sc)
    db_name = sys.argv[1]
    table_name = sys.argv[2]
    file_name = sys.argv[3]
    df = sqlContext.read.format("jdbc").option("url","jdbc:sqlserver://server:port").option("databaseName",db_name).option("driver","com.microsoft.sqlserver.jdbc.SQLServerDriver").option("dbtable",table_name).option("user","uid").option("password","pwd").load()
    
    df.registerTempTable("test")
    df.write.format("com.databricks.spark.csv").save(file_name)
    

    spart-submit test.py <db_name> <table_name> <file_name>