BigQuery dengan koneksi BigTable, tidak dapat menjalankan kueri apa pun

9

Saya ingin membuat beberapa laporan berdasarkan data di BigTable. Untuk itu saya ingin membuat kueri yang akan mendapatkan data terbaru dari BigTable dan meneruskannya ke laporan data studio. Sekarang masalahnya adalah ketika saya membuat koneksi BigTable di BigQuery saya tidak bisa menjalankan query apa pun, bahkan pada tabel kosong. Saya membuat tipe untuk BigQuery dengan cara berikut:

bq mk \
--external_table_definition=gs://somebucket/big-table-definition.json \
datareportingdataset.datareportingtable

dan perintah berhasil dijalankan. big-table-definition.jsonPenampilan saya seperti berikut:

{
    "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
                ]
            }
        ]
    }
}

Kesalahan saat melakukan select *kueri sederhana tampak seperti berikut:

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.

Pertama saya mencurigai beberapa data di BigTable tetapi ketika saya menghapus semuanya dari sana kesalahan masih terjadi. Saya telah menemukan bahwa itu pasti ada sesuatu dengan file json itu sendiri seperti ketika saya memindahkan "sourceFormats" ke bawah beberapa baris kesalahan perubahan posisi yang dilaporkan. Apa yang saya lakukan salah di sini?

Keris
sumber

Jawaban:

1

baru saja mereproduksi kasing Anda dan menemukan kesalahan yang sama persis. Sepertinya saya seperti ketika Anda menjalankan perintah bq mk itu tidak mengekstraksi data sama sekali.

Sebagai workarroud saya menyarankan Anda untuk menjalankan pekerjaan Dataflow untuk mengekstrak data Anda ke Cloud Storage sebagai file .avro dan kemudian mengimpor data Anda ke dalam dataset di Bigquery.

Chris32
sumber
Saya tidak percaya bahwa file avro Bigtable dapat diimpor ke BigQuery (walaupun ia menerima file avro)
Billy Jacobson
1

Saya pikir saya menemukan masalah karena saya dapat mereproduksinya. Pesan kesalahan membingungkan tetapi, seperti yang didokumentasikan di sini :

Anda harus membuat file skema JSON secara manual, dan itu harus ada di mesin lokal Anda. Merujuk file skema JSON yang disimpan di Cloud Storage atau di Google Drive tidak didukung.

Saya melakukan beberapa tes dengan quicktart Bigtable dan itu bekerja dengan baik untuk saya:

bq query "SELECT * FROM DATASET.datareportingtable"
Waiting on JOB_ID ... (3s) Current status: DONE   
+--------+-----------------+---------------------------+-----------------------+
| rowkey | cf1_column_name | cf1_column_cell_timestamp | cf1_column_cell_value |
+--------+-----------------+---------------------------+-----------------------+
| r1     | c1              |       2019-10-15 18:15:04 | test-value            |
+--------+-----------------+---------------------------+-----------------------+

Satu-satunya hal yang saya lakukan berbeda adalah menggunakan jalur lokal seperti pada:

--external_table_definition=big-table-definition.json

Mengubah ini kembali ke:

--external_table_definition=gs://$BUCKET/big-table-definition.json

Dan saya mendapat kesalahan yang sama:

bq query "SELECT * FROM DATASET.datareportingtable2"
Waiting on JOB_ID ... (0s) Current status: DONE   
BigQuery error in query operation: Error processing job 'PROJECT:JOB_ID': Error while reading table: DATASET.datareportingtable2, error message: Error detected while parsing row starting at
position: 2. Error: Data between close double quote (") and field separator.
Guillem Xercavins
sumber
Menarik, saya tidak punya waktu untuk memeriksanya sekarang, tetapi terima kasih atas usahanya
Kris