BigQuery ที่มีการเชื่อมต่อ BigTable ไม่สามารถเรียกใช้แบบสอบถามใด ๆ


9

ฉันต้องการสร้างรายงานตามข้อมูลใน BigTable เพื่อที่ฉันต้องการสร้างแบบสอบถามที่จะได้รับข้อมูลล่าสุดจาก BigTable และส่งผ่านไปยังรายงานสตูดิโอข้อมูล ตอนนี้ปัญหาคือเมื่อฉันสร้างการเชื่อมต่อ BigTable ใน BigQuery ฉันไม่สามารถดำเนินการค้นหาใด ๆ แม้ในตารางว่าง ฉันสร้างประเภทสำหรับ BigQuery ด้วยวิธีต่อไปนี้:

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

และคำสั่งดำเนินการสำเร็จ ฉันbig-table-definition.jsonดูเหมือนว่าต่อไปนี้:

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

ข้อผิดพลาดเมื่อทำการselect *ค้นหาแบบง่ายดูเหมือนว่าต่อไปนี้:

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.

ครั้งแรกฉันสงสัยว่าข้อมูลบางอย่างใน BigTable แต่เมื่อฉันลบทุกอย่างออกจากที่นั่นข้อผิดพลาดยังคงเกิดขึ้น ฉันได้พบว่ามันจะต้องเป็นสิ่งที่มีไฟล์ json ตัวเองเช่นเมื่อฉันย้าย "sourceFormats" ลงไม่กี่บรรทัดข้อผิดพลาดการเปลี่ยนแปลงตำแหน่งรายงาน ฉันทำอะไรผิดที่นี่

คำตอบ:


1

เพิ่งทำซ้ำกรณีของคุณและพบข้อผิดพลาดเดียวกันแน่นอน ดูเหมือนว่าเมื่อคุณเรียกใช้คำสั่ง bq mk จะไม่ดึงข้อมูลใด ๆ เลย

ฉันขอแนะนำให้คุณเรียกใช้งาน Dataflowเพื่อแยกข้อมูลของคุณไปยัง Cloud Storage เป็นไฟล์. avro แล้วนำเข้าข้อมูลของคุณไปยังชุดข้อมูลใน Bigquery


ผมไม่เชื่อว่าไฟล์ Bigtable รว์จะสามารถที่จะนำเข้าสู่ BigQuery (แม้ว่ามันจะยอมรับไฟล์รว์)
บิลลี่ Jacobson

1

ฉันคิดว่าฉันพบปัญหาในขณะที่ฉันสามารถทำซ้ำได้ ข้อความแสดงข้อผิดพลาดเกิดความสับสน แต่มีการบันทึกไว้ที่นี่ :

คุณต้องสร้างไฟล์สคีมา JSON ด้วยตนเองและจะต้องอยู่ในเครื่องของคุณ ไม่รองรับการอ้างอิงไฟล์สคีมา JSON ที่จัดเก็บใน Cloud Storage หรือใน Google ไดรฟ์

ฉันทำการทดสอบบางอย่างกับBigstartstartและมันทำงานได้ดีสำหรับฉัน:

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            |
+--------+-----------------+---------------------------+-----------------------+

สิ่งเดียวที่ฉันทำแตกต่างคือการใช้เส้นทางท้องถิ่นเช่นเดียวกับใน:

--external_table_definition=big-table-definition.json

เปลี่ยนกลับเป็น:

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

และฉันได้รับข้อผิดพลาดเดียวกัน:

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.

น่าสนใจฉันไม่มีเวลาตรวจสอบในตอนนี้ แต่ต้องขอบคุณความพยายาม
กริช
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.