BigTable कनेक्शन के साथ BigQuery, किसी भी क्वेरी को निष्पादित नहीं कर सकता है


9

मैं बिगटेबल में डेटा के आधार पर कुछ रिपोर्ट जनरेट करना चाहता हूं। उसके लिए मैं एक क्वेरी बनाना चाहता था जो बिगटेबल से नवीनतम डेटा प्राप्त करेगी और डेटा स्टूडियो रिपोर्ट पर इसे पारित करेगी। अब समस्या यह है कि जब मैं 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.

पहले मुझे बिगटेबल में कुछ डेटा पर संदेह हो रहा था लेकिन जब मैंने वहाँ से सब कुछ डिलीट कर दिया तब भी त्रुटि होती है। मुझे पता चला है कि यह json फ़ाइल के साथ ही कुछ होना चाहिए जब मैं "sourceFormats" को कुछ पंक्तियों से नीचे ले जाता हूं, तो त्रुटि की स्थिति रिपोर्ट में बदल जाती है। मुझसे यहां क्या गलत हो रहा है?

जवाबों:


1

बस अपने मामले को पुन: पेश किया और वही त्रुटि पाई। यह मेरे जैसा दिखता है जब आप bk mk कमांड चलाते हैं तो यह कोई डेटा नहीं निकाल रहा है।

वर्कअराउंड के रूप में, मैं आपको एक .avro फ़ाइल के रूप में क्लाउड स्टोरेज पर अपना डेटा निकालने के लिए एक डेटाफ़्लो जॉब चलाने का सुझाव दूंगा और फिर Bigquery में अपने डेटा को डेटासेट में आयात करूँगा।


मुझे विश्वास नहीं होता है कि बिगटेबल एवरो फाइलें बिगविक (भले ही यह एवरो फाइलों को स्वीकार करता है) में आयात करने में सक्षम हैं
बिली जैकबसन

1

मुझे लगता है कि मुझे समस्या मिल गई क्योंकि मैं इसे पुन: पेश करने में सक्षम था। त्रुटि संदेश भ्रामक है, लेकिन यहां दस्तावेज के रूप में :

आपको मैन्युअल रूप से JSON स्कीमा फ़ाइल बनानी होगी, और यह आपके स्थानीय मशीन पर होनी चाहिए। क्लाउड स्टोरेज या Google ड्राइव में संग्रहीत JSON स्कीमा फ़ाइल को संदर्भित करना समर्थित नहीं है।

मैंने बिगटेबल क्विकार्टार्ट के साथ कुछ परीक्षण किए और इसने मेरे लिए अच्छा काम किया:

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.

दिलचस्प है, मेरे पास यह जांचने का समय नहीं है, लेकिन इस प्रयास के लिए धन्यवाद
क्रिस 6
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.