如何通过Spark SQL连接BigQuery?-问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

如何通过Spark SQL连接BigQuery?

2019-04-22 16:45:08 3277 1

data = pd.read_gbq(SampleQuery, project_id='XXXXXXXX', private_key='filename.json')
这里的filename.json具有以下格式:

{
"type": "service_account",
"project_id": "projectId",
"private_key_id": "privateKeyId",
"private_key": "privateKey",
"client_email": "clientEmail",
"client_id": "clientId",
"auth_uri": "https://accounts.google.com/o/oauth2/auth",
"token_uri": "https://oauth2.googleapis.com/token",
"auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
"client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/clientEmail"
}
现在,我需要将此代码移植到pyspark。但是我很难找到如何使用Spark SQL进行查询。我正在使用AWS EMR集群来运行此查询!

取消 提交回答
全部回答(1)
  • 小六码奴
    2019-07-17 23:33:59

    由于需要使用SQLContext对象来使用Spark SQL,因此需要首先配置SparkContext以连接到BigQuery。从我的角度来看,BigQuery Connector(由sramalingam24和Kenneth Jung解决)可用于在BigQuery中查询数据。

    请注意,sramalingam24提供了一个示例链接,以下是代码摘要:

    bucket = sc._jsc.hadoopConfiguration().get('fs.gs.system.bucket')
    project = sc._jsc.hadoopConfiguration().get('fs.gs.project.id')
    input_directory = 'gs://{}/hadoop/tmp/bigquery/pyspark_input'.format(bucket)

    conf = {

    # Input Parameters.
    'mapred.bq.project.id': project,
    'mapred.bq.gcs.bucket': bucket,
    'mapred.bq.temp.gcs.path': input_directory,
    'mapred.bq.input.project.id': 'publicdata',
    'mapred.bq.input.dataset.id': 'samples',
    'mapred.bq.input.table.id': 'shakespeare',

    }

    table_data = sc.newAPIHadoopRDD(

    'com.google.cloud.hadoop.io.bigquery.JsonTextBigQueryInputFormat',
    'org.apache.hadoop.io.LongWritable',
    'com.google.gson.JsonObject',
    conf=conf)
    

    word_counts = (

    table_data
    .map(lambda record: json.loads(record[1]))
    .map(lambda x: (x['word'].lower(), int(x['word_count'])))
    .reduceByKey(lambda x, y: x + y))
    

    sql_context = SQLContext(sc)
    (word_counts
    .toDF(['word', 'word_count'])
    .write.format('json').save(output_directory))
    然后,您可以下载其他Hadoop集群的连接器jar。Kenneth Jung提供的链接信息表明选项--jar可用于包含连接符(--jars gs://spark-lib/bigquery/spark-bigquery-latest.jar),这是一个包含的选项驱动程序和执行程序类路径上的jar。

    0 0
相关问答

1

回答

Spark是因为什么快,Spark SQL 一定比 Hive 快吗

2021-12-12 20:57:37 408浏览量 回答数 1

1

回答

spark sql为什么比hive快?

2021-12-06 01:08:51 139浏览量 回答数 1

1

回答

Spark SQL中的Hive表是什么?

2020-12-28 11:45:00 432浏览量 回答数 1

0

回答

Comparison of Spark SQL with Hive

2018-07-28 23:06:28 795浏览量 回答数 0

1

回答

Spark Streaming 原理是什么?

2022-01-13 15:54:26 1118浏览量 回答数 1

1

回答

Spark Streaming中的DStream的输出操作是什么?

2021-12-07 20:17:49 135浏览量 回答数 1

1

回答

Spark Streaming中的DStream的转化操作是什么?

2021-12-07 20:17:05 111浏览量 回答数 1

1

回答

spark streaming中的foreachRDD(func)方法是什么?

2021-12-07 08:05:05 291浏览量 回答数 1

1

回答

如何使用Spark Streaming SQL进行 PV/UV统计?

2020-12-28 11:38:30 485浏览量 回答数 1

1

回答

使用Spark Streaming SQL进行 PV/UV统计的准备工作?

2020-12-28 11:39:00 415浏览量 回答数 1
+关注
8
文章
487
问答
问答排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载