BigQuery Python: คิวรีทำงานผ่านพร็อกซี แต่การดาวน์โหลดล้มเหลว
ตรวจสอบว่าการดาวน์โหลดผลลัพธ์ของ BigQuery Python สร้างไคลเอนต์ Storage API แยกต่างหากจากเส้นทาง HTTP ของคิวรีหรือไม่
คิวรีอาจเสร็จสมบูรณ์ได้แต่ยังล้มเหลวเมื่อดาวน์โหลดผลลัพธ์ลงใน pandas ไลบรารี BigQuery Python อาจใช้ไคลเอนต์ BigQuery Storage API แยกต่างหากสำหรับการดาวน์โหลดนั้น
อินเทอร์เฟซ RowIterator.to_dataframe ระบุ create_bqstorage_client ซึ่งมีค่าเริ่มต้นเป็น true และอาร์กิวเมนต์ bqstorage_client อ่านการตั้งค่าเหล่านั้นร่วมกับ dependencies ที่มีอยู่ในแอปพลิเคชัน ความสำเร็จบนเส้นทางคิวรีปกติไม่ได้พิสูจน์ว่าทรานสปอร์ตการดาวน์โหลดแบบเลือกได้มีการรองรับพร็อกซีหรือการกำหนดค่าเดียวกัน
| ขั้นตอน | สิ่งที่ต้องตรวจสอบ |
|---|---|
| การได้มาซึ่งข้อมูลรับรอง | ทรานสปอร์ตของข้อมูลรับรองและ endpoint ของ identity |
| การส่งและสำรวจคิวรี | เส้นทางคำขอของไคลเอนต์ BigQuery |
| การดาวน์โหลดผ่าน Storage API | ไคลเอนต์ Storage API และทรานสปอร์ตของมัน |
สำหรับการเปรียบเทียบแบบควบคุม ตัวเลือก create_bqstorage_client=False ที่มีเอกสารระบุไว้จะหลีกเลี่ยงการสร้างไคลเอนต์เพิ่มเติมนั้นโดยอัตโนมัติ ซึ่งช่วยระบุได้ว่าเส้นทางใดล้มเหลว นี่เป็นการเลือกทรานสปอร์ตที่มีผลต่อประสิทธิภาพ ไม่ใช่หลักฐานว่าพร็อกซีเองได้รับการซ่อมแซม
หากแอปพลิเคชันจัดหาไคลเอนต์ Storage API ของตัวเอง ให้กำหนดค่าไคลเอนต์นั้นอย่างตั้งใจ อย่าสันนิษฐานว่าออบเจ็กต์ HTTP ที่กำหนดเองซึ่งแนบกับไคลเอนต์อื่นจะกำหนดค่าใหม่ให้กับมัน
ตัวอย่างเก่ากล่าวถึงการใช้งาน httplib2 ที่ล้าสมัยหรือฮุกของ constructor แบบส่วนตัว จับคู่การผสานรวมกับรุ่นของไลบรารีที่ติดตั้งไว้ และเก็บขั้นตอนที่ล้มเหลวไว้ในรายงาน ข้อผิดพลาดในการแปลงเป็น DataFrame และการเชื่อมต่อเครือข่ายที่ถูกปฏิเสธเป็นผลลัพธ์ที่แตกต่างกันแม้จะเกิดขึ้นในการเรียกเมธอดเดียวกัน