如何在Spark会话中指定雪花选项?

时间:2020-03-09 07:29:00

标签: apache-spark apache-spark-sql snowflake-cloud-data-platform

我想通过运行类似:-

的命令来运行从Spark到Snowflake的查询

sparkSession.sql(“ query”);

所以我想了解在创建sparksession本身时可以在哪里指定以下雪花选项。

val defaultOptions = Map(
     "sfURL" -> "",
     "sfAccount" > "",
      "sfUser" -> "",
      "sfPassword" -> "",
     "sfDatabase" -> "",
     "sfSchema" -> "public",
     "sfWarehouse" -> ""
)

尽管我知道我可以在火花接头上使用这些选项,如下所示:-

  def snowflakedf(sql: String) = { 
             spark.read
             .format("net.snowflake.spark.snowflake")
             .options(defaultOptions)
             .option("query", sql")
             .load()
           }

但是我的问题是我必须专门使用spark sql才能运行查询。

谢谢。

1 个答案:

答案 0 :(得分:0)

尝试将USING和OPTIONS添加到SQL语句中。之前,我曾使用过此方法从Snowflake数据源在HIVE中创建全局表:

user = "<username>"
password = "<password>"
​
sf_url="<ACCOUNT>.snowflakecomputing.com"
sf_database="<SF_DB>"
sf_schema="<SF_SCHEMA>"
sf_warehouse="<SF_WF>"
sf_table="<SF_TABLE>"

create_table_str = "CREATE TABLE {0} (ID decimal(38,0)) 
  USING net.snowflake.spark.snowflake 
  OPTIONS (`sfURL`='{1}',`sfUser`='{2}',`sfPassword`='{3}',`sfDatabase`='{4}',`sfSchema`='{5}',`sfWarehouse`='{6}',`dbtable` = '{7}')"
  .format(sf_table, sf_url, user, password, sf_database, sf_schema, sf_warehouse, sf_table )

spark.sql(create_table_str)
相关问题