Chcę wygenerować kilka raportów na podstawie danych w BigTable. W tym celu chciałem utworzyć zapytanie, które pobierze najnowsze dane z BigTable i przekaże je do raportu studia danych. Problem polega na tym, że kiedy tworzę połączenie BigTable w BigQuery, nie mogę wykonać żadnego zapytania, nawet na pustej tabeli. Typ dla BigQuery tworzę w następujący sposób:
bq mk \
--external_table_definition=gs://somebucket/big-table-definition.json \
datareportingdataset.datareportingtable
a polecenie zostanie wykonane pomyślnie. Moje big-table-definition.json
wygląda następująco:
{
"sourceFormat": "BIGTABLE",
"sourceUris": [
"https://googleapis.com/bigtable/projects/playground-2/instances/data-reporting/tables/data-reporting-table"
],
"bigtableOptions": {
"readRowkeyAsString": "true",
"columnFamilies" : [
{
"familyId": "cf1",
"onlyReadLatest": "true",
"columns": [
{
"qualifierString": "temp",
"type": "STRING"
},
{
//the rest of the columns
]
}
]
}
}
Błąd podczas wykonywania prostego select *
zapytania wygląda następująco:
Error while reading table: datareportingdataset.datareportingtable, error message: Error detected while parsing row starting at position: 2. Error: Data between close double quote (") and field separator.
Najpierw podejrzewałem niektóre dane w BigTable, ale kiedy usunąłem wszystko stamtąd, błąd nadal występuje. Dowiedziałem się, że musi to być coś z samym plikiem json, ponieważ gdy przesuwam „sourceFormats” w dół o kilka wierszy, zgłaszany błąd zmienia pozycję. Co robię tutaj źle?
Myślę, że znalazłem problem, ponieważ byłem w stanie go odtworzyć. Komunikat o błędzie jest mylący, ale jak udokumentowano tutaj :
Zrobiłem kilka testów z szybkim startem Bigtable i działało to dla mnie dobrze:
Jedyne, co zrobiłem inaczej, to użycie ścieżki lokalnej jak w:
Zmieniając to z powrotem na:
I dostałem ten sam błąd:
źródło