我正在尝试使用spark加载和写入bigquery表,但是如果不在US / EU中,则无法加载或写入任何数据。我的数据当前位于asia-east
中。
我已经尝试了以下库
samelamin/spark-bigquery
,spotify/spark-bigquery
,Bigqueryconnector with Spark (bigdataoss)
,甚至是Beta GoogleCloudPlatform/spark-bigquery-connector
。据我所知,使用前三个库将无法工作,因为它无法根据jobId查找工作,并且将显示illegalError to StopWatch()
,除非从dataproc修复了依赖关系,否则无法修复依赖关系。使用beta连接器将显示以下
io.grpc.StatusRuntimeException: UNAVAILABLE: Policy checks are unavailable.
com.google.api.gax.rpc.UnavailableException: io.grpc.StatusRuntimeException: UNAVAILABLE: Policy checks are unavailable.
at com.google.api.gax.rpc.ApiExceptionFactory.createException(ApiExceptionFactory.java:69)
at com.google.api.gax.grpc.GrpcApiExceptionFactory.create(GrpcApiExceptionFactory.java:72)
at com.google.api.gax.grpc.GrpcApiExceptionFactory.create(GrpcApiExceptionFactory.java:60)
此代码用于beta连接器。
def loadBQTable[T](implicit bigQueryTableInfo: BigQueryTableInfo[T], encoder: Encoder[T]): Dataset[T] = {
val df = spark.read.bigquery("playground_asia.table_to_load")
println("df: " + df) // Returns the table schema
println("=================")
println("collect: " + df.collect()) // Returns an error if its from asia
println("show: " + df.show())
df.as[T]
}
请注意,当我的表格位于美国时,上述所有库都可以正常工作。