HackerReposA FIELD GUIDE TO OPEN SOURCE
ProSponsor the shelf♧ 0
← Back to top all-time
typelevel
frameless
Scala2020–2020
typelevel / frameless

frameless

Expressive types for Spark.

2Distinct people
2Mentions
0Explicit recommenders
898GitHub stars
REPOSITORY AT A GLANCE

What to know before exploring

What it is

Expressive types for Spark.

GitHub

Where it is used

No documented product use has been verified yet.

What people are saying

No recommendation phrase was found in the indexed comments.

No classified warning is attached to this page. Read the discussions before treating silence as approval.

Also in these discussions

No other repository is repeatedly linked in the same discussions.

This week on Hacker News

Nov 7–Nov 14 UTC · Direct repository links and separately labeled related project stories. Indexed through 11/14/2026, 12:24:10 PM UTC.

No direct repository links were found in the indexed HN discussions over the past seven days. Older discussions are available below.

Mentions over time

HN mentions by week2 dated mentions

Observed mentions: 2020-10-05 16:04:22 UTC to 2020-11-10 13:14:06 UTC. Weeks start Monday, UTC.

012020-10-05 00:00:00 UTC to 2020-10-12 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 commentsOct 52020-10-12 00:00:00 UTC to 2020-10-19 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2020-10-19 00:00:00 UTC to 2020-10-26 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 commentsOct 192020-10-26 00:00:00 UTC to 2020-11-02 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2020-11-02 00:00:00 UTC to 2020-11-09 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2020-11-09 00:00:00 UTC to 2020-11-16 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 commentsNov 9

Counts come from the repository’s dated source evidence. Index cutoff: 2026-11-02 08:16:59 UTC.

View mention counts and date ranges
UTC ranges include their start and exclude their end. Select a period to filter the source evidence.
PeriodStart (UTC)End (exclusive, UTC)MentionsSubmissionsComments
Oct 52020-10-05 00:00:00 UTC2020-10-12 00:00:00 UTC101
Oct 122020-10-12 00:00:00 UTC2020-10-19 00:00:00 UTC000
Oct 192020-10-19 00:00:00 UTC2020-10-26 00:00:00 UTC000
Oct 262020-10-26 00:00:00 UTC2020-11-02 00:00:00 UTC000
Nov 22020-11-02 00:00:00 UTC2020-11-09 00:00:00 UTC000
Nov 92020-11-09 00:00:00 UTC2020-11-16 00:00:00 UTC101

What Hacker News says

2 sources
>ETL / data transformations. Python is a big player here - but for stable and performant data pipelines, I strongly believe Scala is the better choice. For explorative things, python has the edge though. I disagree. And I've done a lot of Scala ETL work. The issue is that in Scala ETL work your data structures are either untyped (Spark Dataframe), case classes or typed tuples. If they're untyped then there's little to gain from Scala vs. Python in terms of type safety and a lot of overhead. If they're case classes then you're moving around a lot of unnecessary data fields and you've got the overhead of making fifty intermediate case classes yourself. If it's typed tuples then it's on you to remember which field is what as nothing is named. Some sort of intelligent compile time case class subset generation would have helped the situation i
Read the rest
mmensely. I think frameless (https://github.com/typelevel/frameless) gives you that power but it's a lot of shapeless black magic overhead and I've never seen it used in production (and probably various maximum field limitations and much slower compile times). edit: Case classes also have (or had) a steeply increasing compile time memory requirement as you add more fields which is fun when your data is 200+ fields long. Almost as fun as having to make a 200 field case class to read in a single file of which you only need 50 fields but want to be type safe. edit2: Scala is popular in ETL because the Hadoop ecosystem is JVM and Java used to be atrocious. So Spark (which wanted Hadoop compatibility) picked Scala because it was better than the alternatives. However nowadays Databricks is investing a lot more into their Python support from what I can tell and there's Python native competitors out there (Dask, Ray, etc.).
In Explicit term inference with Scala 3
To principle #2: The author acknowledges this as being incompatible with static typing, but I'm not so sure. Is it that, or is it that it's incompatible with contemporary static languages? In FP, we already have a concept of type-safe hetergeneous lists and maps, and even some clever implementations in languages like Java[1]. The ergonomics are often less-than-stellar, but I'm pretty sure that's something a new language could fix with some syntactic sugar. There is also the data frame abstraction (like, you see in Pandas), which is typically implemented on top of dynamic typing, but major implementations often rely on static typing behind the scenes to achieve efficiency. There are also projects like Frameless[2], which implements a statically typed interface over a dynamically typed dataframe package.[3] I'm guessing, again, that careful
Read the rest
language design could get us something similar, but with better ergonomics. And I'd be happy with that. I've been pulling away from static languages lately, and a big part of that is that I really like how some of the dynamic languages let me model my data as data. It's enough of a complexity saver to feel like a net win, even at the cost of some performance and static verification. [1] For example: https://github.com/palatable/lambda#hlist [2] https://github.com/typelevel/frameless [3] Which is itself, notably, implemented in a static language. Spark also has a statically typed version of the API, but its usage is not recommended for several reasons, one of which is performance. That's something that all us static typing fans should really stop to think about for a bit.
In Principles of Data Oriented Programming

MAKE YOURSELF AT HOME

A few shortcuts

/
Search the collection
?
Open this guide
Esc
Close dialogs and navigation

Your saved repositories and interests stay in this browser.