20 #include <cudf/detail/utilities/visitor_overload.hpp>
32 namespace CUDF_EXPORT
cudf {
98 std::variant<std::vector<data_type>,
99 std::map<std::string, data_type>,
100 std::map<std::string, schema_element>,
114 bool _mixed_types_as_string =
false;
116 char _delimiter =
'\n';
118 bool _prune_columns =
false;
120 bool _experimental =
false;
123 size_t _byte_range_offset = 0;
125 size_t _byte_range_size = 0;
128 bool _dayfirst =
false;
131 bool _keep_quotes =
false;
134 bool _normalize_single_quotes =
false;
137 bool _normalize_whitespace =
false;
145 bool _strict_validation =
false;
147 bool _allow_numeric_leading_zeros =
true;
149 bool _allow_nonnumeric_numbers =
true;
151 bool _allow_unquoted_control_chars =
true;
153 std::vector<std::string> _na_values;
222 if (_byte_range_size == 0) {
225 return _byte_range_size + get_byte_range_padding();
236 auto const num_columns =
237 std::visit(cudf::detail::visitor_overload{
238 [](
auto const& dtypes) {
return dtypes.size(); },
239 [](
schema_element const& dtypes) {
return dtypes.child_types.size(); }},
242 auto const max_row_bytes = 16 * 1024;
243 auto const column_bytes = 64;
244 auto const base_padding = 1024;
246 if (num_columns == 0) {
248 return max_row_bytes;
251 return base_padding + num_columns * column_bytes;
260 [[nodiscard]]
char get_delimiter()
const {
return _delimiter; }
348 return _allow_numeric_leading_zeros;
371 return _allow_unquoted_control_chars;
379 [[nodiscard]] std::vector<std::string>
const&
get_na_values()
const {
return _na_values; }
386 void set_dtypes(std::vector<data_type> types) { _dtypes = std::move(types); }
393 void set_dtypes(std::map<std::string, data_type> types) { _dtypes = std::move(types); }
400 void set_dtypes(std::map<std::string, schema_element> types) { _dtypes = std::move(types); }
450 case '\r':
CUDF_FAIL(
"不支持的分隔符字符。", std::invalid_argument);
break;
452 _delimiter = delimiter;
547 _allow_numeric_leading_zeros = val;
561 _allow_nonnumeric_numbers = val;
576 _allow_unquoted_control_chars = val;
584 void set_na_values(std::vector<std::string> vals) { _na_values = std::move(vals); }
616 options._dtypes = std::move(types);
628 options._dtypes = std::move(types);
640 options._dtypes = std::move(types);
664 options._compression = comp_type;
676 options._byte_range_offset = offset;
688 options._byte_range_size = size;
712 options._lines = val;
725 options._mixed_types_as_string = val;
741 options._prune_columns = val;
756 options._experimental = val;
768 options._dayfirst = val;
781 options._keep_quotes = val;
794 options._normalize_single_quotes = val;
807 options._normalize_whitespace = val;
819 options._recovery_mode = val;
1156 : options{sink,
table}
1168 options._table = tbl;
1180 options._compression = comptype;
1192 options._metadata = std::move(metadata);
1204 options._na_rep = std::move(val);
1216 options._include_nulls = val;
1228 options._lines = val;
1240 options._rows_per_chunk = val;
1252 options._true_value = std::move(val);
1264 options._false_value = std::move(val);
json_reader_options_builder & normalize_single_quotes(bool val)
设置读取器是否应该规范化字符串周围的单引号。
json_reader_options_builder & nonnumeric_numbers(bool val)
设置特定的未加引号的数值是否为有效的 JSON。这些值包括 NaN, +INF,...
json_reader_options_builder & keep_quotes(bool val)
设置读取器是否应保留字符串值的引号。
json_reader_options_builder & normalize_whitespace(bool val)
设置读取器是否应规范化未加引号的空白字符。
json_reader_options_builder & numeric_leading_zeros(bool val)
设置是否允许数值中包含前导零。必须启用严格验证才能使用此选项...
json_reader_options_builder & dtypes(schema_element types)
设置要读取的列的数据类型。
json_reader_options_builder & dayfirst(bool val)
设置是否将日期解析为 DD/MM 而非 MM/DD。
json_reader_options_builder & recovery_mode(json_recovery_mode_t val)
指定 JSON 读取器在遇到无效 JSON 行时的行为。
json_reader_options_builder & na_values(std::vector< std::string > vals)
设置要识别为 null 值的附加值。
json_reader_options_builder & delimiter(char delimiter)
设置 JSON 行中分隔记录的分隔符。
json_reader_options_builder & prune_columns(bool val)
设置读取时是否修剪列,根据 dtypes 选项选择。
json_reader_options_builder & experimental(bool val)
设置是否启用实验性功能。
json_reader_options_builder & lines(bool val)
设置是否按行读取文件作为 JSON 对象。
json_reader_options_builder & dtypes(std::vector< data_type > types)
设置要读取的列的数据类型。
json_reader_options && build()
一旦构建完成,移动 json_reader_options 成员。
json_reader_options_builder & mixed_types_as_string(bool val)
设置是否将混合类型解析为字符串列。还允许强制将结构体读取为字符串...
json_reader_options_builder & unquoted_control_chars(bool val)
设置在加引号的字符串中,是否允许使用 >= 0 且 < 32 的字符而无需某种形式的转义...
json_reader_options_builder & compression(compression_type comp_type)
设置压缩类型。
json_reader_options_builder(source_info src)
从 source info 构造。
json_reader_options_builder & strict_validation(bool val)
设置 JSON 验证是否应该严格。
json_reader_options_builder & byte_range_size(size_type size)
设置要读取的字节数。
json_reader_options_builder & dtypes(std::map< std::string, schema_element > types)
设置要读取的列的数据类型。
json_reader_options_builder & byte_range_offset(size_type offset)
设置从源开始跳过的字节数。
json_reader_options_builder()=default
默认构造函数。
json_reader_options_builder & dtypes(std::map< std::string, data_type > types)
设置要读取的列的数据类型。
bool is_allowed_nonnumeric_numbers() const
是否允许未加引号的数值 NaN, +INF, -INF, +Infinity, Infinity,...
void enable_mixed_types_as_string(bool val)
设置是否将混合类型解析为字符串列。还允许强制将结构体读取为字符串...
void set_compression(compression_type comp_type)
设置压缩类型。
void set_dtypes(std::vector< data_type > types)
设置要读取的列的数据类型。
void allow_unquoted_control_chars(bool val)
设置在加引号的字符串中,是否应允许大于或等于 0 且小于 32 的字符...
void enable_normalize_single_quotes(bool val)
设置读取器是否应启用规范化字符串周围的单引号。
bool is_allowed_numeric_leading_zeros() const
数值中是否允许前导零。
void enable_prune_columns(bool val)
设置读取时是否修剪列,根据 set_dtypes 选项选择。
bool is_enabled_keep_quotes() const
读取器是否应保留字符串值的引号。
void set_dtypes(schema_element types)
为潜在的嵌套列层级设置数据类型。
void enable_normalize_whitespace(bool val)
设置读取器是否应启用规范化未加引号的空白字符。
void allow_nonnumeric_numbers(bool val)
设置是否允许未加引号的数值 NaN, +INF, -INF, +Infinity, Infinity,...
size_t get_byte_range_offset() const
返回从源开始跳过的字节数。
source_info const & get_source() const
返回源信息。
void enable_experimental(bool val)
设置是否启用实验性功能。
void set_dtypes(std::map< std::string, data_type > types)
设置要读取的列的数据类型。
bool is_enabled_prune_columns() const
读取时是否修剪列,根据 set_dtypes 选项选择。
char get_delimiter() const
返回 JSON 行中分隔记录的分隔符。
bool is_enabled_lines() const
是否按行读取文件作为 JSON 对象。
void allow_numeric_leading_zeros(bool val)
设置是否允许数值中包含前导零。必须启用严格验证才能使用此选项...
void set_strict_validation(bool val)
设置是否启用严格验证。
bool is_enabled_mixed_types_as_string() const
是否将混合类型解析为字符串列。
json_reader_options()=default
默认构造函数。
void set_na_values(std::vector< std::string > vals)
设置要识别为 null 值的附加值。
void enable_dayfirst(bool val)
设置是否将日期解析为 DD/MM 而非 MM/DD。
size_t get_byte_range_size_with_padding() const
返回带填充的要读取的字节数。
void set_recovery_mode(json_recovery_mode_t val)
指定 JSON 读取器在遇到无效 JSON 行时的行为。
bool is_enabled_normalize_whitespace() const
读取器是否应规范化未加引号的空白字符。
bool is_strict_validation() const
是否应严格执行 JSON 验证。
void set_delimiter(char delimiter)
设置 JSON 行中分隔记录的分隔符。
void set_byte_range_offset(size_t offset)
设置从源开始跳过的字节数。
void enable_lines(bool val)
设置是否按行读取文件作为 JSON 对象。
dtype_variant const & get_dtypes() const
返回列的数据类型。
void enable_keep_quotes(bool val)
设置读取器是否应保留字符串值的引号。
bool is_enabled_normalize_single_quotes() const
读取器是否应规范化字符串周围的单引号。
compression_type get_compression() const
返回源的压缩格式。
void set_dtypes(std::map< std::string, schema_element > types)
为潜在的嵌套列层级设置数据类型。
size_t get_byte_range_size() const
返回要读取的字节数。
std::variant< std::vector< data_type >, std::map< std::string, data_type >, std::map< std::string, schema_element >, schema_element > dtype_variant
保存列的 dtypes 信息的变体类型。
bool is_enabled_experimental() const
是否启用实验性功能。
json_recovery_mode_t recovery_mode() const
查询 JSON 读取器在遇到无效 JSON 行时的行为。
static json_reader_options_builder builder(source_info src)
创建将构建 json_reader_options 的 json_reader_options_builder。
bool is_enabled_dayfirst() const
是否将日期解析为 DD/MM 而非 MM/DD。
size_t get_byte_range_padding() const
返回读取时要填充的字节数。
bool is_allowed_unquoted_control_chars() const
在加引号的字符串中,是否应允许大于或等于 0 且小于 32 的字符...
std::vector< std::string > const & get_na_values() const
返回要识别为 null 值的附加值。
void set_byte_range_size(size_t size)
设置要读取的字节数。
用于构建 writer_json() 选项的构建器。
json_writer_options_builder & compression(compression_type comptype)
设置输出目标的压缩类型。
json_writer_options_builder & include_nulls(bool val)
启用/禁用将 null 作为 'null' 输出。
json_writer_options_builder & table(table_view tbl)
设置要写入输出的表。
json_writer_options_builder()=default
默认构造函数。
json_writer_options_builder & rows_per_chunk(int val)
设置每次文件写入处理的最大行数。
json_writer_options_builder & true_value(std::string val)
设置 INT8 类型中用于值 != 0 的字符串。
json_writer_options_builder & false_value(std::string val)
设置 INT8 类型中用于值 == 0 的字符串。
json_writer_options_builder(sink_info const &sink, table_view const &table)
从 sink 和 table 构造。
json_writer_options_builder & na_rep(std::string val)
设置用于 null 条目的字符串。
json_writer_options_builder & metadata(table_metadata metadata)
设置可选的元数据(包含列名)。
json_writer_options && build()
一旦构建完成,移动 json_writer_options 成员。
json_writer_options_builder & lines(bool val)
启用/禁用每条记录使用 JSON 行格式。
void set_compression(compression_type comptype)
设置要使用的压缩类型。
compression_type get_compression() const
返回用于 sink 的压缩类型。
table_view const & get_table() const
返回将要写入输出的表。
void set_false_value(std::string val)
设置 INT8 类型中用于值 == 0 的字符串。
void enable_include_nulls(bool val)
启用/禁用将 null 作为 'null' 输出。
bool is_enabled_include_nulls() const
是否将 null 作为 'null' 输出。
void enable_lines(bool val)
启用/禁用每条记录使用 JSON 行格式。
void set_na_rep(std::string val)
设置用于 null 条目的字符串。
static json_writer_options_builder builder(sink_info const &sink, table_view const &table)
创建用于创建 json_writer_options 的构建器。
json_writer_options()=default
默认构造函数。
void set_true_value(std::string val)
设置 INT8 类型中用于值 != 0 的字符串。
sink_info const & get_sink() const
返回用于写入器输出的 sink。
void set_rows_per_chunk(size_type val)
设置每次文件写入处理的最大行数。
std::string const & get_true_value() const
返回 INT8 类型中用于值 != 0 的字符串。
void set_table(table_view tbl)
设置要写入输出的表。
std::string const & get_false_value() const
返回 INT8 类型中用于值 == 0 的字符串。
bool is_enabled_lines() const
是否为记录格式使用 JSON 行。
size_type get_rows_per_chunk() const
返回每次文件写入处理的最大行数。
std::optional< table_metadata > const & get_metadata() const
返回元数据信息。
std::string const & get_na_rep() const
返回用于 null 条目的字符串。
void set_metadata(table_metadata metadata)
设置元数据。
一组大小相同的 cudf::column_view。
size_type num_rows() const noexcept
返回行数。
rmm::cuda_stream_view const get_default_stream()
获取当前的默认流。
table_with_metadata read_json(json_reader_options options, rmm::cuda_stream_view stream=cudf::get_default_stream(), rmm::device_async_resource_ref mr=cudf::get_current_device_resource_ref())
将 JSON 数据集读取到一组列中。
json_recovery_mode_t
控制 JSON 解析器的错误恢复行为。
@ RECOVER_WITH_NULL
从错误中恢复,将无效记录替换为 null。
void write_json(json_writer_options const &options, rmm::cuda_stream_view stream=cudf::get_default_stream())
将一组列写入 JSON 格式。
rmm::device_async_resource_ref get_current_device_resource_ref()
获取当前的设备内存资源引用。
cuda::mr::async_resource_ref< cuda::mr::device_accessible > device_async_resource_ref
#define CUDF_EXPECTS(...)
用于检查(前置)条件的宏,当条件不满足时抛出异常。
#define CUDF_FAIL(...)
指示已执行错误代码路径。
int32_t size_type
列和表的行索引类型。
允许通过 json_reader_options 的 set_dtypes 方法指定嵌套 JSON 数据的目标类型。
std::optional< std::vector< std::string > > column_order
允许指定列的顺序。
std::map< std::string, schema_element > child_types
允许指定此列的子列的目标类型。
(mutable)_table_view 的类定义。