我在GCP Google Cloud Platform上还很陌生,所以希望我的问题不会显得那么愚蠢。
舞台:
主要目标是从BigQuery收集少量扩展表并进行少量转换。由于我打算使用Dataproc部署Pyspark脚本的表的大小,理想情况下,我将能够使用sqlContext将少量sql查询应用于DF(从BQ中提取的表)。最后,我可以轻松地将此信息转储到数据存储桶中的文件中。
问题:
我可以在Pyspark脚本中使用import google.datalab.bigquery as bq
吗?
此提议的模式是最有效的还是我可以验证其他任何模式?请记住,我需要创建许多时间查询,这就是为什么我虽然使用Spark。
我希望在此example之后,使用pandas和bq以pandas df的形式读取结果查询。以后,我可能会使用Spark中的sc.parallelize
将pandas df转换为spark df。这种方法正确吗?
在与@Tanvee来回交流之后,我们得出结论,当您需要将数据从DataStorage读入Dataproc时,GCP需要一个中间分配步骤。简要地说,您的spark或hadoop脚本可能需要一个临时存储区,用于存储表中的数据,然后将其导入Spark。
参考文献:
Big Query Connector \ Deployment
非常感谢
答案 0 :(得分:2)
您将需要使用BigQuery connector来产生火花。 GCP文档here和here中有一些示例。它将创建RDD,您可以将其转换为数据帧,然后就可以执行所有典型的转换。希望有帮助。
答案 1 :(得分:0)
您可以直接使用以下选项从spark连接bigquery表。
您还可以使用spark-bigquery连接器https://github.com/samelamin/spark-bigquery使用spark直接在dataproc上运行查询。
https://github.com/GoogleCloudPlatform/spark-bigquery-connector这是Beta中的新连接器。这是易于使用的bigquery的spark数据源api。