2017-06-18 32 views
0

我有幾個用R編寫的程序,它們使用bigrquery來運行查詢,刪除表和上載數據。這些都是在Windows 7機器上使用R版本3.3.1在R studio中編寫的。沒有任何問題一遍又一遍地運行着它們。HTTP/2成幀層中的流錯誤:R studio中的bigrquery命令錯誤,但不包含在基R中

新員工正嘗試在Windows 10上運行相同的確切程序。相同版本的基本R和R工作室。這些軟件包都安裝得很好,沒有任何錯誤。但是命令發送通過代碼(即query_exec,insert_upload_job)將提交至BigQuery,但他們掛了幾分鐘,然後返回以下錯誤:在捲曲

錯誤:: curl_fetch_memory(URL,手柄=手柄): HTTP/2成幀層中的流錯誤

這些查詢通常在2秒內運行。這些命令在同一臺機器上以R爲基礎快速運行,沒有錯誤。

我在家裏有一臺Windows 10筆記本電腦,所以我用同樣的方法安裝了所有東西,它顯示的是同樣的行爲。這些命令在基本R中運行良好,但在返回上述錯誤之前在R studio中「掛起」了幾分鐘。

奇怪的是,週期性的相同的命令在R studio中運行良好,但大多數情況下我們會得到錯誤。

我找了這個問題,並發現: RHUB/RHUB#32

但我無法弄清楚如何關閉http2在客戶端,看看是否會有幫助。

有一兩件事我注意到的是,當我檢查捲曲版本: 捲曲:: curl_version() 它表明我的Windows 7機器上的版本7.47.1(正常工作的那個)?它沒有顯示http2值。

在Windows 10機器上,它顯示捲曲版本7.53.1,並顯示http2 = TRUE參數。

我一直無法弄清楚如何棄用Win10機器上的curl版本來查看是否可以解決問題。

無論如何,我會認爲如果這是最新版本的問題,其他人會有同樣的問題。

我也發佈了這個到bigrquery github問題頁面,但到目前爲止沒有人回覆。

任何幫助表示讚賞!

+0

'curl :: handle_setopt()'讓你設置捲曲手柄選項。您希望確保'http_version'設置爲'2',它映射到cURL庫中的'CURL_HTTP_VERSION_1_1'。但是,我不使用大量的查詢來知道如何獲取傳遞給ops的句柄。 – hrbrmstr

+0

謝謝hrbrmsfr。我無法弄清楚如何將這個選項傳遞到句柄中 - 我會將你的評論添加到github帖子中,因爲它可以幫助bigrquery開發人員識別修補程序。 – Mark

回答

1

我通過執行以下步驟創建了一個解決方法: 1.刪除了我的基礎R win-library子文件夾中的curl文件夾(當我嘗試安裝舊版本的curl時,它無法自動刪除當前版本) 2.安裝捲曲版本0.9.7(這個版本不使用http2) install.packages( 「https://cloud.r-project.org/bin/windows/contrib/3.1/curl_0.9.7.zip」,回購= NULL,類型= 「源」)

運行卷曲:: curl_version()確認沒有http2參數

長期來看,有人仍然需要解決這個問題。我已經將它發佈到bigrquery的github存儲庫上,但我不確定它們是否需要修復它,或者修復是否需要在curl()函數中發生。