TE
科技回声
首页24小时热榜最新最佳问答展示工作
GitHubTwitter
首页

科技回声

基于 Next.js 构建的科技新闻平台,提供全球科技新闻和讨论内容。

GitHubTwitter

首页

首页最新最佳问答展示工作

资源链接

HackerNews API原版 HackerNewsNext.js

© 2025 科技回声. 版权所有。

Demystifying Apache Arrow (2020)

197 点作者 dmlorenzetti超过 2 年前

13 条评论

RobinL超过 2 年前
Author here. Since I wrote this, Arrow seems to be be more and more pervasive. As a data engineer, the adoption of Arrow (and parquet) as a data exchange format has so much value. It&#x27;s amazing how much time me and colleagues have spent on data type issues that have arisen from the wide range of data tooling (R, Pandas, Excel etc. etc.). So much so that I try to stick to parquet, using SQL where possible to easily preserve data types (pandas is a particularly bad offender for managing data types).<p>In doing so, I&#x27;m implicitly using Arrow - e.g. with Duckdb, AWS Athena and so on. The list of tools using Arrow is long! <a href="https:&#x2F;&#x2F;arrow.apache.org&#x2F;powered_by&#x2F;" rel="nofollow">https:&#x2F;&#x2F;arrow.apache.org&#x2F;powered_by&#x2F;</a><p>Another interesting development since I wrote this is DuckDB.<p>DuckDB offers a compute engine with great performance against parquet files and other formats. Probably similar performance to Arrow. It&#x27;s interesting they opted to write their own compute engine rather than use Arrow&#x27;s - but I believe this is partly because Arrow was immature when they were starting out. I mention it because, as far as I know, there&#x27;s not yet an easy SQL interface to Arrow from Python.<p>Nonetheless, DuckDB are still Arrow for some of its other features: <a href="https:&#x2F;&#x2F;duckdb.org&#x2F;2021&#x2F;12&#x2F;03&#x2F;duck-arrow.html" rel="nofollow">https:&#x2F;&#x2F;duckdb.org&#x2F;2021&#x2F;12&#x2F;03&#x2F;duck-arrow.html</a><p>Arrow also has a SQL query engine: <a href="https:&#x2F;&#x2F;arrow.apache.org&#x2F;blog&#x2F;2019&#x2F;02&#x2F;04&#x2F;datafusion-donation&#x2F;" rel="nofollow">https:&#x2F;&#x2F;arrow.apache.org&#x2F;blog&#x2F;2019&#x2F;02&#x2F;04&#x2F;datafusion-donation...</a><p>I might be wrong about this - but in my experience, it feels like there&#x27;s more consensus around the Arrow format, as opposed to the compute side.<p>Going forward, I see parquet continuing on its path to becoming a de facto standard for storing and sharing bulk data. I&#x27;m particularly excited about new tools that allow you to process it in the browser. I&#x27;ve written more about this just yesterday: <a href="https:&#x2F;&#x2F;www.robinlinacre.com&#x2F;parquet_api&#x2F;" rel="nofollow">https:&#x2F;&#x2F;www.robinlinacre.com&#x2F;parquet_api&#x2F;</a>, discussion: <a href="https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=34310695" rel="nofollow">https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=34310695</a>.
评论 #34328580 未加载
评论 #34324711 未加载
kajika91超过 2 年前
I prefer looking at benchmarks : <a href="https:&#x2F;&#x2F;towardsdatascience.com&#x2F;the-best-format-to-save-pandas-data-414dca023e0d" rel="nofollow">https:&#x2F;&#x2F;towardsdatascience.com&#x2F;the-best-format-to-save-panda...</a><p>I have used Arrow and even made my humble contribution to the Go binding but I don&#x27;t like pretending it is so much better than other solutions. It is not a silver bullet and probably the best pro is the &quot;non-copy&quot; goal to convert data into different frameworks&#x27; object. Depending of the use for the data columnar layout can be better but not always.
Lyngbakr超过 2 年前
This has been a game changer for us. When our analysts run queries on parquets using Arrow they are orders of magnitude faster than equivalent SQL queries on databases.
评论 #34323350 未加载
评论 #34323271 未加载
alamb超过 2 年前
Here is another blog post that offers some perspective on the growth of Arrow over the intervening years and future directions: <a href="https:&#x2F;&#x2F;www.datawill.io&#x2F;posts&#x2F;apache-arrow-2022-reflection&#x2F;" rel="nofollow">https:&#x2F;&#x2F;www.datawill.io&#x2F;posts&#x2F;apache-arrow-2022-reflection&#x2F;</a>
评论 #34332541 未加载
agumonkey超过 2 年前
Very interesting project<p>ps: a tiny video to explain storage layout optimizations <a href="https:&#x2F;&#x2F;yewtu.be&#x2F;watch?v=dPb2ZXnt2_U" rel="nofollow">https:&#x2F;&#x2F;yewtu.be&#x2F;watch?v=dPb2ZXnt2_U</a>
gizmodo59超过 2 年前
There is a bunch of other projects that grew out of arrow which are also contributing a lot to data engineering: <a href="https:&#x2F;&#x2F;www.dremio.com&#x2F;blog&#x2F;apache-arrows-rapid-growth-over-the-years&#x2F;" rel="nofollow">https:&#x2F;&#x2F;www.dremio.com&#x2F;blog&#x2F;apache-arrows-rapid-growth-over-...</a>
flakiness超过 2 年前
FYI: A recent &quot;Data Analysis Podcast&quot; interviews the Arrows founder Wes McKinney on this topic.<p><a href="https:&#x2F;&#x2F;roundup.getdbt.com&#x2F;p&#x2F;ep-37-what-does-apache-arrow-unlock" rel="nofollow">https:&#x2F;&#x2F;roundup.getdbt.com&#x2F;p&#x2F;ep-37-what-does-apache-arrow-un...</a>
hermitcrab超过 2 年前
I have written a desktop data wrangling&#x2F;ETL tool for Windows&#x2F;Mac (Easy Data Transform). It is designed to handle millions of rows (but not billions). Currently it mostly inputs and outputs CSV, Excel, XML and JSON. I am looking to add some additional formats in future, such as SQLite, Parquet or DuckBD. Maybe I need to look at Feather as well? I could also use one of these formats to store intermediate datasets to disk, rather than holding everything in memory. If anyone has any experience in integrating any of these formats into a C++ application on Windows and&#x2F;or Mac, I would be interested to hear how you got on and what libraries you used.
d_burfoot超过 2 年前
Can someone comment on the code quality of Arrow vs other Apache data engineering tools?<p>I have been burned so many times by amateur hour software engineering failures from the Apache world, that it’s very hard for me to ever willingly adopt anything from that brand again. Just put it in gripped JSon or TSV and hey, if there’s a performance penalty, it’s better to pay a bit more for cloud compute than hate your job because of some nonsense dependency issue caused by an org.Apache library failing to follow proper versioning guidelines.
评论 #34326584 未加载
评论 #34324723 未加载
rr888超过 2 年前
I always thought the file format was going to be tightly bound to Arrow but looks like they aren&#x27;t encouraging feather. Should we just be using Parquet for file storage?
评论 #34324649 未加载
kordlessagain超过 2 年前
FeatureBase uses Arrow for processing data stored in bitmap format: <a href="https:&#x2F;&#x2F;featurebase.com&#x2F;" rel="nofollow">https:&#x2F;&#x2F;featurebase.com&#x2F;</a>
mjburgess超过 2 年前
&gt; Learning more about a tool that can filter and aggregate two billion rows on a laptop in two seconds<p>If someone has a code example to this effect, I&#x27;d be greatful.<p>I was once engaged in a salesy pitch by a cloud advocate that BigQuery (et al.) can &quot;process a billion rows a second&quot;.<p>I tried to create an SQLite example with a billion rows to show that this isn&#x27;t impressive, but I gave up after some obstacles to generating the data.<p>It would be nice to have an example like this to show developers (, engineers) who have become accustomed to the extreme levels of CPU abuse today, to show that modern laptops really are supercomputers.<p>It should be obvious that a laptop can rival a data centre at 90% of ordinary tasks, that it isn&#x27;t in my view, has a lot to do with the state of OS&#x2F;Browser&#x2F;App&#x2F;etc. design &amp; performance. Supercomputers, alas, dedicated to drawing pixels by way of a dozen layers of indirection.
评论 #34323527 未加载
评论 #34323124 未加载
评论 #34323205 未加载
评论 #34323532 未加载
评论 #34323417 未加载
评论 #34323164 未加载
评论 #34326162 未加载
amayui超过 2 年前
We&#x27;ve been thinking about using Parquet as a serialization format during data exchange in our project as well.