Java kullanarak BigQuery'ye <T> Dizisini kaydedin
Nov 26 2020
Spark Big Query bağlayıcısını kullanarak verileri Big sorguya kaydetmeye çalışıyorum. Diyelim ki aşağıdaki gibi bir Java pojo'm var
@Getter
@Setter
@AllArgsConstructor
@ToString
@Builder
public class TagList {
private String s1;
private List<String> s2;
}
Şimdi bu Pojo'yu Büyük sorguya kaydetmeye çalıştığımda, beni aşağıdaki hataya atıyor
Caused by: com.google.cloud.spark.bigquery.repackaged.com.google.cloud.bigquery.BigQueryException: Failed to load to test_table1 in job JobId{project=<project_id>, job=<job_id>, location=US}. BigQuery error was Provided Schema does not match Table <Table_Name>. Field s2 has changed type from STRING to RECORD
at com.google.cloud.spark.bigquery.BigQueryWriteHelper.loadDataToBigQuery(BigQueryWriteHelper.scala:156)
at com.google.cloud.spark.bigquery.BigQueryWriteHelper.writeDataFrameToBigQuery(BigQueryWriteHelper.scala:89)
... 35 more
Basit kod:
Dataset<TagList> mapDS = inputDS.map((MapFunction<Row, TagList>) x -> {
List<String> list = new ArrayList<>();
list.add(x.get(0).toString());
list.add("temp1");
return TagList.builder()
.s1("Hello World")
.s2(list).build();
}, Encoders.bean(TagList.class));
mapDS.write().format("bigquery")
.option("temporaryGcsBucket","<bucket_name>")
.option("table", "<table_name>")
.option("project", projectId)
.option("parentProject", projectId)
.mode(SaveMode.Append)
.save();
Büyük Sorgu Tablosu:
create table <dataset>.<table_name> (
s1 string,
s2 array<string>,
)
PARTITION BY
TIMESTAMP_TRUNC(_PARTITIONTIME, HOUR);
Yanıtlar
DavidRabinowitz Nov 30 2020 at 18:59
Lütfen intermediateFormat'ı AVRO veya ORC olarak değiştirin. Parquet kullanılırken, serileştirme bir ara yapı oluşturur. Daha fazlasını görünhttps://github.com/GoogleCloudDataproc/spark-bigquery-connector#properties
Donovan, Şarkılarından 1'ini The Beatles'ın "Lucy in the Sky with Diamonds" şarkısıyla karşılaştırdı
Nicole Kidman, Michael Keaton ve Val Kilmer'in Batman Olarak Paylaştığı Bu 1 Çekici Özelliğe Bayıldı
Charly Reynolds Yakın Zamandaki Vokal Kord Ameliyatını Açıkladı: 'Şarkı Söylemekte Sorun Yaşıyordum'
Kevin Jonas'ın Kızı Alena, Doğum Günü Fotoğrafında Büyümüş Görünüyor: '9 Yaşında Gerçek Hissetmiyor'