Use pqarrow in zio/parquetio - #4547

Merged
nwt merged 1 commit into
mainfrom
pqarrow
Apr 27, 2023
Merged

Use pqarrow in zio/parquetio#4547
nwt merged 1 commit into
mainfrom
pqarrow

Conversation

@nwt

@nwtnwt commented Apr 25, 2023

Copy link
Copy Markdown
Member

Reading and writing are much faster with it than with github.com/fraugster/parquet-go. Its only apparent drawback is that it offers no easy way to support Zed's duration and float16 types, and writing a value containing either produces a cryptic error.

$ echo '{a:1.(float16)}' | zq -f parquet -
parquetio: unsupported type: not implemented yet

Closes#764, closes#4278, and closes#4527.

Reading and writing are much faster with it than with
github.com/fraugster/parquet-go. Its only apparent drawback is that it
offers no easy way to support Zed's duration and float16 types, and
writing a value containing either produces a cryptic error.
$ echo '{a:1.(float16)}' | zq -f parquet -
parquetio: unsupported type: not implemented yet
Closes#764, closes#4278, and closes#4527.
@nwt
nwt requested a review from a teamApril 25, 2023 19:47
@philrz

Copy link
Copy Markdown
Contributor

@nwt: Regarding the lack of float16 and duration support, in your travels did you happen to find any open issues for the library pointing at this limitation? If not, would it be appropriate to open our own? It definitely seems there's net positives from moving to the new lib, but since we're still losing a little it might be nice if there were issues I could watch via Notifications so we know if/when things change. Given that it's two libraries that both purport to offer "Parquet" support I'd hope they'd one day converge, though maybe I shouldn't hold my breath. 😄

@nwt

nwt commented Apr 26, 2023

Copy link
Copy Markdown
MemberAuthor

@philrz: Our current support for these types is entirely on our side. There's no support for them in github.com/fraugster/parquet-go (I don't count the INTERVAL converted type because of its month component) and no issue for either in github.com/apache/arrow, and I doubt there ever will be given the pace of progress on apache/parquet-format#43, apache/parquet-format#165, and apache/parquet-format#184.

@philrz

Copy link
Copy Markdown
Contributor

This comment is basically a note-to-self to summarize an offline conversation @nwt and I had, as I may need to refer back to this in the future. What I now understand is that even though our prior Parquet support was able to output what started as Zed values of the float16 or duration types, what ended up in the Parquet files were actually float32 and interval. In essence we've never had true "round-trip" support with Parquet (i.e., if you wrote out values of those types with our old Parquet writer and then read that Parquet back in with Zed, you'd not get back values with Zed float16 or duration types) so if it could be said anything was lost here in terms of functionality it was arguably only ever a placebo. As for the "cryptic error" that appears now, it's understood that ideally it would point to the specific type/value that caused it to choke, but the work involved to create the ideal error message appears non-trivial so we're keen to defer that effort until users actually bump into it.

@nwt
nwt merged commit deea4a4 into mainApr 27, 2023
@nwt
nwt deleted the pqarrow branch April 27, 2023 22:30
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Zed can't read Parquet output from DuckDB Replace zio/parquetio with zio/arrowio and pqarrow Support "Avro Old List Structure" in Parquet reader

3 participants

@nwt@philrz@mattnibs
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Use pqarrow in zio/parquetio - #4547

Merged
nwt merged 1 commit into
mainfrom
pqarrow
Apr 27, 2023
Merged

Use pqarrow in zio/parquetio#4547
nwt merged 1 commit into
mainfrom
pqarrow

Conversation

@nwt

@nwtnwt commented Apr 25, 2023

Copy link
Copy Markdown
Member

Reading and writing are much faster with it than with github.com/fraugster/parquet-go. Its only apparent drawback is that it offers no easy way to support Zed's duration and float16 types, and writing a value containing either produces a cryptic error.

$ echo '{a:1.(float16)}' | zq -f parquet -
parquetio: unsupported type: not implemented yet

Closes#764, closes#4278, and closes#4527.

Reading and writing are much faster with it than with
github.com/fraugster/parquet-go. Its only apparent drawback is that it
offers no easy way to support Zed's duration and float16 types, and
writing a value containing either produces a cryptic error.
$ echo '{a:1.(float16)}' | zq -f parquet -
parquetio: unsupported type: not implemented yet
Closes#764, closes#4278, and closes#4527.
@nwt
nwt requested a review from a teamApril 25, 2023 19:47
@philrz

Copy link
Copy Markdown
Contributor

@nwt: Regarding the lack of float16 and duration support, in your travels did you happen to find any open issues for the library pointing at this limitation? If not, would it be appropriate to open our own? It definitely seems there's net positives from moving to the new lib, but since we're still losing a little it might be nice if there were issues I could watch via Notifications so we know if/when things change. Given that it's two libraries that both purport to offer "Parquet" support I'd hope they'd one day converge, though maybe I shouldn't hold my breath. 😄

@nwt

nwt commented Apr 26, 2023

Copy link
Copy Markdown
MemberAuthor

@philrz: Our current support for these types is entirely on our side. There's no support for them in github.com/fraugster/parquet-go (I don't count the INTERVAL converted type because of its month component) and no issue for either in github.com/apache/arrow, and I doubt there ever will be given the pace of progress on apache/parquet-format#43, apache/parquet-format#165, and apache/parquet-format#184.

@philrz

Copy link
Copy Markdown
Contributor

This comment is basically a note-to-self to summarize an offline conversation @nwt and I had, as I may need to refer back to this in the future. What I now understand is that even though our prior Parquet support was able to output what started as Zed values of the float16 or duration types, what ended up in the Parquet files were actually float32 and interval. In essence we've never had true "round-trip" support with Parquet (i.e., if you wrote out values of those types with our old Parquet writer and then read that Parquet back in with Zed, you'd not get back values with Zed float16 or duration types) so if it could be said anything was lost here in terms of functionality it was arguably only ever a placebo. As for the "cryptic error" that appears now, it's understood that ideally it would point to the specific type/value that caused it to choke, but the work involved to create the ideal error message appears non-trivial so we're keen to defer that effort until users actually bump into it.

@nwt
nwt merged commit deea4a4 into mainApr 27, 2023
@nwt
nwt deleted the pqarrow branch April 27, 2023 22:30
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Zed can't read Parquet output from DuckDB Replace zio/parquetio with zio/arrowio and pqarrow Support "Avro Old List Structure" in Parquet reader

3 participants

@nwt@philrz@mattnibs
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Use pqarrow in zio/parquetio - #4547

Merged
nwt merged 1 commit into
mainfrom
pqarrow
Apr 27, 2023
Merged

Use pqarrow in zio/parquetio#4547
nwt merged 1 commit into
mainfrom
pqarrow

Conversation

@nwt

@nwtnwt commented Apr 25, 2023

Copy link
Copy Markdown
Member

Reading and writing are much faster with it than with github.com/fraugster/parquet-go. Its only apparent drawback is that it offers no easy way to support Zed's duration and float16 types, and writing a value containing either produces a cryptic error.

$ echo '{a:1.(float16)}' | zq -f parquet -
parquetio: unsupported type: not implemented yet

Closes#764, closes#4278, and closes#4527.

Reading and writing are much faster with it than with
github.com/fraugster/parquet-go. Its only apparent drawback is that it
offers no easy way to support Zed's duration and float16 types, and
writing a value containing either produces a cryptic error.
$ echo '{a:1.(float16)}' | zq -f parquet -
parquetio: unsupported type: not implemented yet
Closes#764, closes#4278, and closes#4527.
@nwt
nwt requested a review from a teamApril 25, 2023 19:47
@philrz

Copy link
Copy Markdown
Contributor

@nwt: Regarding the lack of float16 and duration support, in your travels did you happen to find any open issues for the library pointing at this limitation? If not, would it be appropriate to open our own? It definitely seems there's net positives from moving to the new lib, but since we're still losing a little it might be nice if there were issues I could watch via Notifications so we know if/when things change. Given that it's two libraries that both purport to offer "Parquet" support I'd hope they'd one day converge, though maybe I shouldn't hold my breath. 😄

@nwt

nwt commented Apr 26, 2023

Copy link
Copy Markdown
MemberAuthor

@philrz: Our current support for these types is entirely on our side. There's no support for them in github.com/fraugster/parquet-go (I don't count the INTERVAL converted type because of its month component) and no issue for either in github.com/apache/arrow, and I doubt there ever will be given the pace of progress on apache/parquet-format#43, apache/parquet-format#165, and apache/parquet-format#184.

@philrz

Copy link
Copy Markdown
Contributor

This comment is basically a note-to-self to summarize an offline conversation @nwt and I had, as I may need to refer back to this in the future. What I now understand is that even though our prior Parquet support was able to output what started as Zed values of the float16 or duration types, what ended up in the Parquet files were actually float32 and interval. In essence we've never had true "round-trip" support with Parquet (i.e., if you wrote out values of those types with our old Parquet writer and then read that Parquet back in with Zed, you'd not get back values with Zed float16 or duration types) so if it could be said anything was lost here in terms of functionality it was arguably only ever a placebo. As for the "cryptic error" that appears now, it's understood that ideally it would point to the specific type/value that caused it to choke, but the work involved to create the ideal error message appears non-trivial so we're keen to defer that effort until users actually bump into it.

@nwt
nwt merged commit deea4a4 into mainApr 27, 2023
@nwt
nwt deleted the pqarrow branch April 27, 2023 22:30
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Zed can't read Parquet output from DuckDB Replace zio/parquetio with zio/arrowio and pqarrow Support "Avro Old List Structure" in Parquet reader

3 participants

@nwt@philrz@mattnibs
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Use pqarrow in zio/parquetio - #4547

Merged
nwt merged 1 commit into
mainfrom
pqarrow
Apr 27, 2023
Merged

Use pqarrow in zio/parquetio#4547
nwt merged 1 commit into
mainfrom
pqarrow

Conversation

@nwt

@nwtnwt commented Apr 25, 2023

Copy link
Copy Markdown
Member

Reading and writing are much faster with it than with github.com/fraugster/parquet-go. Its only apparent drawback is that it offers no easy way to support Zed's duration and float16 types, and writing a value containing either produces a cryptic error.

$ echo '{a:1.(float16)}' | zq -f parquet -
parquetio: unsupported type: not implemented yet

Closes#764, closes#4278, and closes#4527.

Reading and writing are much faster with it than with
github.com/fraugster/parquet-go. Its only apparent drawback is that it
offers no easy way to support Zed's duration and float16 types, and
writing a value containing either produces a cryptic error.
$ echo '{a:1.(float16)}' | zq -f parquet -
parquetio: unsupported type: not implemented yet
Closes#764, closes#4278, and closes#4527.
@nwt
nwt requested a review from a teamApril 25, 2023 19:47
@philrz

Copy link
Copy Markdown
Contributor

@nwt: Regarding the lack of float16 and duration support, in your travels did you happen to find any open issues for the library pointing at this limitation? If not, would it be appropriate to open our own? It definitely seems there's net positives from moving to the new lib, but since we're still losing a little it might be nice if there were issues I could watch via Notifications so we know if/when things change. Given that it's two libraries that both purport to offer "Parquet" support I'd hope they'd one day converge, though maybe I shouldn't hold my breath. 😄

@nwt

nwt commented Apr 26, 2023

Copy link
Copy Markdown
MemberAuthor

@philrz: Our current support for these types is entirely on our side. There's no support for them in github.com/fraugster/parquet-go (I don't count the INTERVAL converted type because of its month component) and no issue for either in github.com/apache/arrow, and I doubt there ever will be given the pace of progress on apache/parquet-format#43, apache/parquet-format#165, and apache/parquet-format#184.

@philrz

Copy link
Copy Markdown
Contributor

This comment is basically a note-to-self to summarize an offline conversation @nwt and I had, as I may need to refer back to this in the future. What I now understand is that even though our prior Parquet support was able to output what started as Zed values of the float16 or duration types, what ended up in the Parquet files were actually float32 and interval. In essence we've never had true "round-trip" support with Parquet (i.e., if you wrote out values of those types with our old Parquet writer and then read that Parquet back in with Zed, you'd not get back values with Zed float16 or duration types) so if it could be said anything was lost here in terms of functionality it was arguably only ever a placebo. As for the "cryptic error" that appears now, it's understood that ideally it would point to the specific type/value that caused it to choke, but the work involved to create the ideal error message appears non-trivial so we're keen to defer that effort until users actually bump into it.

@nwt
nwt merged commit deea4a4 into mainApr 27, 2023
@nwt
nwt deleted the pqarrow branch April 27, 2023 22:30
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Zed can't read Parquet output from DuckDB Replace zio/parquetio with zio/arrowio and pqarrow Support "Avro Old List Structure" in Parquet reader

3 participants

@nwt@philrz@mattnibs
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Use pqarrow in zio/parquetio - #4547

Merged
nwt merged 1 commit into
mainfrom
pqarrow
Apr 27, 2023
Merged

Use pqarrow in zio/parquetio#4547
nwt merged 1 commit into
mainfrom
pqarrow

Conversation

@nwt

@nwtnwt commented Apr 25, 2023

Copy link
Copy Markdown
Member

Reading and writing are much faster with it than with github.com/fraugster/parquet-go. Its only apparent drawback is that it offers no easy way to support Zed's duration and float16 types, and writing a value containing either produces a cryptic error.

$ echo '{a:1.(float16)}' | zq -f parquet -
parquetio: unsupported type: not implemented yet

Closes#764, closes#4278, and closes#4527.

Reading and writing are much faster with it than with
github.com/fraugster/parquet-go. Its only apparent drawback is that it
offers no easy way to support Zed's duration and float16 types, and
writing a value containing either produces a cryptic error.
$ echo '{a:1.(float16)}' | zq -f parquet -
parquetio: unsupported type: not implemented yet
Closes#764, closes#4278, and closes#4527.
@nwt
nwt requested a review from a teamApril 25, 2023 19:47
@philrz

Copy link
Copy Markdown
Contributor

@nwt: Regarding the lack of float16 and duration support, in your travels did you happen to find any open issues for the library pointing at this limitation? If not, would it be appropriate to open our own? It definitely seems there's net positives from moving to the new lib, but since we're still losing a little it might be nice if there were issues I could watch via Notifications so we know if/when things change. Given that it's two libraries that both purport to offer "Parquet" support I'd hope they'd one day converge, though maybe I shouldn't hold my breath. 😄

@nwt

nwt commented Apr 26, 2023

Copy link
Copy Markdown
MemberAuthor

@philrz: Our current support for these types is entirely on our side. There's no support for them in github.com/fraugster/parquet-go (I don't count the INTERVAL converted type because of its month component) and no issue for either in github.com/apache/arrow, and I doubt there ever will be given the pace of progress on apache/parquet-format#43, apache/parquet-format#165, and apache/parquet-format#184.

@philrz

Copy link
Copy Markdown
Contributor

This comment is basically a note-to-self to summarize an offline conversation @nwt and I had, as I may need to refer back to this in the future. What I now understand is that even though our prior Parquet support was able to output what started as Zed values of the float16 or duration types, what ended up in the Parquet files were actually float32 and interval. In essence we've never had true "round-trip" support with Parquet (i.e., if you wrote out values of those types with our old Parquet writer and then read that Parquet back in with Zed, you'd not get back values with Zed float16 or duration types) so if it could be said anything was lost here in terms of functionality it was arguably only ever a placebo. As for the "cryptic error" that appears now, it's understood that ideally it would point to the specific type/value that caused it to choke, but the work involved to create the ideal error message appears non-trivial so we're keen to defer that effort until users actually bump into it.

@nwt
nwt merged commit deea4a4 into mainApr 27, 2023
@nwt
nwt deleted the pqarrow branch April 27, 2023 22:30
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Zed can't read Parquet output from DuckDB Replace zio/parquetio with zio/arrowio and pqarrow Support "Avro Old List Structure" in Parquet reader

3 participants

@nwt@philrz@mattnibs
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Use pqarrow in zio/parquetio - #4547

Merged
nwt merged 1 commit into
mainfrom
pqarrow
Apr 27, 2023
Merged

Use pqarrow in zio/parquetio#4547
nwt merged 1 commit into
mainfrom
pqarrow

Conversation

@nwt

@nwtnwt commented Apr 25, 2023

Copy link
Copy Markdown
Member

Reading and writing are much faster with it than with github.com/fraugster/parquet-go. Its only apparent drawback is that it offers no easy way to support Zed's duration and float16 types, and writing a value containing either produces a cryptic error.

$ echo '{a:1.(float16)}' | zq -f parquet -
parquetio: unsupported type: not implemented yet

Closes#764, closes#4278, and closes#4527.

Reading and writing are much faster with it than with
github.com/fraugster/parquet-go. Its only apparent drawback is that it
offers no easy way to support Zed's duration and float16 types, and
writing a value containing either produces a cryptic error.
$ echo '{a:1.(float16)}' | zq -f parquet -
parquetio: unsupported type: not implemented yet
Closes#764, closes#4278, and closes#4527.
@nwt
nwt requested a review from a teamApril 25, 2023 19:47
@philrz

Copy link
Copy Markdown
Contributor

@nwt: Regarding the lack of float16 and duration support, in your travels did you happen to find any open issues for the library pointing at this limitation? If not, would it be appropriate to open our own? It definitely seems there's net positives from moving to the new lib, but since we're still losing a little it might be nice if there were issues I could watch via Notifications so we know if/when things change. Given that it's two libraries that both purport to offer "Parquet" support I'd hope they'd one day converge, though maybe I shouldn't hold my breath. 😄

@nwt

nwt commented Apr 26, 2023

Copy link
Copy Markdown
MemberAuthor

@philrz: Our current support for these types is entirely on our side. There's no support for them in github.com/fraugster/parquet-go (I don't count the INTERVAL converted type because of its month component) and no issue for either in github.com/apache/arrow, and I doubt there ever will be given the pace of progress on apache/parquet-format#43, apache/parquet-format#165, and apache/parquet-format#184.

@philrz

Copy link
Copy Markdown
Contributor

This comment is basically a note-to-self to summarize an offline conversation @nwt and I had, as I may need to refer back to this in the future. What I now understand is that even though our prior Parquet support was able to output what started as Zed values of the float16 or duration types, what ended up in the Parquet files were actually float32 and interval. In essence we've never had true "round-trip" support with Parquet (i.e., if you wrote out values of those types with our old Parquet writer and then read that Parquet back in with Zed, you'd not get back values with Zed float16 or duration types) so if it could be said anything was lost here in terms of functionality it was arguably only ever a placebo. As for the "cryptic error" that appears now, it's understood that ideally it would point to the specific type/value that caused it to choke, but the work involved to create the ideal error message appears non-trivial so we're keen to defer that effort until users actually bump into it.

@nwt
nwt merged commit deea4a4 into mainApr 27, 2023
@nwt
nwt deleted the pqarrow branch April 27, 2023 22:30
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Zed can't read Parquet output from DuckDB Replace zio/parquetio with zio/arrowio and pqarrow Support "Avro Old List Structure" in Parquet reader

3 participants

@nwt@philrz@mattnibs
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Use pqarrow in zio/parquetio - #4547

Merged
nwt merged 1 commit into
mainfrom
pqarrow
Apr 27, 2023
Merged

Use pqarrow in zio/parquetio#4547
nwt merged 1 commit into
mainfrom
pqarrow

Conversation

@nwt

@nwtnwt commented Apr 25, 2023

Copy link
Copy Markdown
Member

Reading and writing are much faster with it than with github.com/fraugster/parquet-go. Its only apparent drawback is that it offers no easy way to support Zed's duration and float16 types, and writing a value containing either produces a cryptic error.

$ echo '{a:1.(float16)}' | zq -f parquet -
parquetio: unsupported type: not implemented yet

Closes#764, closes#4278, and closes#4527.

Reading and writing are much faster with it than with
github.com/fraugster/parquet-go. Its only apparent drawback is that it
offers no easy way to support Zed's duration and float16 types, and
writing a value containing either produces a cryptic error.
$ echo '{a:1.(float16)}' | zq -f parquet -
parquetio: unsupported type: not implemented yet
Closes#764, closes#4278, and closes#4527.
@nwt
nwt requested a review from a teamApril 25, 2023 19:47
@philrz

Copy link
Copy Markdown
Contributor

@nwt: Regarding the lack of float16 and duration support, in your travels did you happen to find any open issues for the library pointing at this limitation? If not, would it be appropriate to open our own? It definitely seems there's net positives from moving to the new lib, but since we're still losing a little it might be nice if there were issues I could watch via Notifications so we know if/when things change. Given that it's two libraries that both purport to offer "Parquet" support I'd hope they'd one day converge, though maybe I shouldn't hold my breath. 😄

@nwt

nwt commented Apr 26, 2023

Copy link
Copy Markdown
MemberAuthor

@philrz: Our current support for these types is entirely on our side. There's no support for them in github.com/fraugster/parquet-go (I don't count the INTERVAL converted type because of its month component) and no issue for either in github.com/apache/arrow, and I doubt there ever will be given the pace of progress on apache/parquet-format#43, apache/parquet-format#165, and apache/parquet-format#184.

@philrz

Copy link
Copy Markdown
Contributor

This comment is basically a note-to-self to summarize an offline conversation @nwt and I had, as I may need to refer back to this in the future. What I now understand is that even though our prior Parquet support was able to output what started as Zed values of the float16 or duration types, what ended up in the Parquet files were actually float32 and interval. In essence we've never had true "round-trip" support with Parquet (i.e., if you wrote out values of those types with our old Parquet writer and then read that Parquet back in with Zed, you'd not get back values with Zed float16 or duration types) so if it could be said anything was lost here in terms of functionality it was arguably only ever a placebo. As for the "cryptic error" that appears now, it's understood that ideally it would point to the specific type/value that caused it to choke, but the work involved to create the ideal error message appears non-trivial so we're keen to defer that effort until users actually bump into it.

@nwt
nwt merged commit deea4a4 into mainApr 27, 2023
@nwt
nwt deleted the pqarrow branch April 27, 2023 22:30
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Zed can't read Parquet output from DuckDB Replace zio/parquetio with zio/arrowio and pqarrow Support "Avro Old List Structure" in Parquet reader

3 participants

@nwt@philrz@mattnibs
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Use pqarrow in zio/parquetio - #4547

Merged
nwt merged 1 commit into
mainfrom
pqarrow
Apr 27, 2023
Merged

Use pqarrow in zio/parquetio#4547
nwt merged 1 commit into
mainfrom
pqarrow

Conversation

@nwt

@nwtnwt commented Apr 25, 2023

Copy link
Copy Markdown
Member

Reading and writing are much faster with it than with github.com/fraugster/parquet-go. Its only apparent drawback is that it offers no easy way to support Zed's duration and float16 types, and writing a value containing either produces a cryptic error.

$ echo '{a:1.(float16)}' | zq -f parquet -
parquetio: unsupported type: not implemented yet

Closes#764, closes#4278, and closes#4527.

Reading and writing are much faster with it than with
github.com/fraugster/parquet-go. Its only apparent drawback is that it
offers no easy way to support Zed's duration and float16 types, and
writing a value containing either produces a cryptic error.
$ echo '{a:1.(float16)}' | zq -f parquet -
parquetio: unsupported type: not implemented yet
Closes#764, closes#4278, and closes#4527.
@nwt
nwt requested a review from a teamApril 25, 2023 19:47
@philrz

Copy link
Copy Markdown
Contributor

@nwt: Regarding the lack of float16 and duration support, in your travels did you happen to find any open issues for the library pointing at this limitation? If not, would it be appropriate to open our own? It definitely seems there's net positives from moving to the new lib, but since we're still losing a little it might be nice if there were issues I could watch via Notifications so we know if/when things change. Given that it's two libraries that both purport to offer "Parquet" support I'd hope they'd one day converge, though maybe I shouldn't hold my breath. 😄

@nwt

nwt commented Apr 26, 2023

Copy link
Copy Markdown
MemberAuthor

@philrz: Our current support for these types is entirely on our side. There's no support for them in github.com/fraugster/parquet-go (I don't count the INTERVAL converted type because of its month component) and no issue for either in github.com/apache/arrow, and I doubt there ever will be given the pace of progress on apache/parquet-format#43, apache/parquet-format#165, and apache/parquet-format#184.

@philrz

Copy link
Copy Markdown
Contributor

This comment is basically a note-to-self to summarize an offline conversation @nwt and I had, as I may need to refer back to this in the future. What I now understand is that even though our prior Parquet support was able to output what started as Zed values of the float16 or duration types, what ended up in the Parquet files were actually float32 and interval. In essence we've never had true "round-trip" support with Parquet (i.e., if you wrote out values of those types with our old Parquet writer and then read that Parquet back in with Zed, you'd not get back values with Zed float16 or duration types) so if it could be said anything was lost here in terms of functionality it was arguably only ever a placebo. As for the "cryptic error" that appears now, it's understood that ideally it would point to the specific type/value that caused it to choke, but the work involved to create the ideal error message appears non-trivial so we're keen to defer that effort until users actually bump into it.

@nwt
nwt merged commit deea4a4 into mainApr 27, 2023
@nwt
nwt deleted the pqarrow branch April 27, 2023 22:30
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Zed can't read Parquet output from DuckDB Replace zio/parquetio with zio/arrowio and pqarrow Support "Avro Old List Structure" in Parquet reader

3 participants

@nwt@philrz@mattnibs