我目前正在編寫一個Java工具來從GCS導入幾個CSV文件到BigQuery。我可以通過bq load
輕鬆實現此目的,但我想使用Dataflow作業來完成此操作。因此,我使用Dataflow的Pipeline和ParDo變換器(返回TableRow將其應用於BigQueryIO),並且爲轉換創建了StringToRowConverter()。這裏實際的問題開始 - 我被迫指定目標表的模式,儘管我不想創建一個新表,如果它不存在 - 只是試圖加載數據。所以我不想手動設置TableRow的列名,因爲我有大約600列。如何將CSV文件導入到沒有任何列名或模式的BigQuery表中?
public class StringToRowConverter extends DoFn<String, TableRow> {
private static Logger logger = LoggerFactory.getLogger(StringToRowConverter.class);
public void processElement(ProcessContext c) {
TableRow row = new TableRow();
row.set("DO NOT KNOW THE COLUMN NAME", c.element());
c.output(row);
}
}
此外,假設表已經存在於BigQuery資料集,我並不需要創建它,也CSV文件包含在一個正確的順序列。
如果對此方案沒有解決方法並且數據加載需要列名,那麼我可以在CSV文件的第一行包含它。
任何幫助將不勝感激。