-
Notifications
You must be signed in to change notification settings - Fork 197
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Adding map type read support #914
Adding map type read support #914
Conversation
/gcbrun |
...d_party/apache-spark/src/main/java/com/google/cloud/spark/bigquery/ArrowSchemaConverter.java
Outdated
Show resolved
Hide resolved
...igquery-connector-common/src/main/java/com/google/cloud/spark/bigquery/SchemaConverters.java
Show resolved
Hide resolved
...d_party/apache-spark/src/main/java/com/google/cloud/spark/bigquery/ArrowSchemaConverter.java
Outdated
Show resolved
Hide resolved
🛠 Lift Auto-fixSome of the Lift findings in this PR can be automatically fixed. You can download and apply these changes in your local project directory of your branch to review the suggestions before committing.1 # Download the patch
curl https://lift.sonatype.com/api/patch/github.com/GoogleCloudDataproc/spark-bigquery-connector/914.diff -o lift-autofixes.diff
# Apply the patch with git
git apply lift-autofixes.diff
# Review the changes
git diff Want it all in a single command? Open a terminal in your project's directory and copy and paste the following command: curl https://lift.sonatype.com/api/patch/github.com/GoogleCloudDataproc/spark-bigquery-connector/914.diff | git apply Once you're satisfied, commit and push your changes in your project. Footnotes |
/gcbrun |
/gcbrun |
/gcbrun |
/gcbrun |
1 similar comment
/gcbrun |
/gcbrun |
Field key = subFields.get("key"); | ||
Field value = subFields.get("value"); | ||
MapType mapType = DataTypes.createMapType(convert(key).dataType(), convert(value).dataType()); | ||
return Optional.of(new StructField(field.getName(), mapType, /* nullable */ false, metadata)); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Why is nullable always false?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Because it is a REPEATED field, not NULLABLE. There are some compromises we need to do as BigQuery has no native MAP type
MapType mapType = DataTypes.createMapType(convert(key).dataType(), convert(value).dataType()); | ||
return Optional.of(new StructField(field.getName(), mapType, /* nullable */ false, metadata)); | ||
} catch (IllegalArgumentException e) { | ||
// no "key" or "value" fields |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Can we check if subfields contains "key" and "value" instead of try..catch?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Good point, fixed that
/gcbrun |
/gcbrun |
This reverts commit fb1586e.
Currently reading ARRAY<STRUCT<key,value>> fields into Spark Map is supported. Write and documentation will be added in additional PR, in order to keep them (relatively) small