我已将天蓝色成本数据以 parquet 格式导出到存储帐户。解析该文件时,将数据输出为 GenericData$Fixed(以字节为单位)。我不知道如何从中获取原始值。
我尝试了 toString() 也返回相同的结果。尝试了 BigInteger 也不起作用
数据类型为 org.apache.avro.generic.GenericData$Fixed 我的代码是
ParquetReader<GenericRecord> reader = null;
InputStream in = null;
try
{
in = new FileInputStream(new File("part_1_0001.parquet"));
ParquetStream parquetStream = new ParquetStream(String.valueOf(System.currentTimeMillis()), in);
ParquetConfiguration conf = new PlainParquetConfiguration();
conf.set(org.apache.parquet.avro.AvroReadSupport.READ_INT96_AS_FIXED, "true");
reader = AvroParquetReader
.<GenericRecord>builder(parquetStream,conf)
.build();
GenericRecord record;
while ((record = reader.read()) != null)
{
Object fieldValue = record.get(42);
// fieldValueOutput - [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 121, -61, -40, 0]
}
}
catch(Exception e)
{
...
}
finally
{
if(reader != null)
{
try
{
reader.close();
}
catch(Exception e)
{
...
}
}
if(in!=null)
{
try
{
in.close();
}
catch(Exception e)
{
...
}
}
}
任何人指导我从中获得原始价值。
Azure Cost Exports - Java 中的 Parquet 格式解析
我同意OneCricketeer的评论,你可以使用
Spark
。它将自动解码 Parquet 模式,包括 Avro 字段等复杂类型,而无需您手动解码字节数组。
这里是使用 java 使用 Spark 和 scala 读取 parquet 文件的代码。
代码:
import org.apache.spark.sql.Dataset;
import org.apache.spark.sql.Row;
import org.apache.spark.sql.SparkSession;
public class App {
public static void main(String[] args) {
// Initialize Spark session
SparkSession spark = SparkSession.builder()
.appName("Parquet Reader")
.master("local[*]")
.getOrCreate();
// Read the Parquet file into a DataFrame
Dataset<Row> df = spark.read().parquet("data.parquet");
df.printSchema();
df.show();
df.select("your_field_name").show();
spark.stop();
}
}
输出:
root
|-- column0: string (nullable = true)
|-- column1: string (nullable = true)
+---------+--------+
| column0| column1|
+---------+--------+
| first| last|
| Jorge| Frank|
| Hunter| Moreno|
| Esther| Guzman|
| Dennis|Stephens|
| Nettie|Franklin|
| Stanley| Gibson|
| Eugenia| Greer|
| Jeffery| Delgado|
| Clara| Cross|
| Bernice| Vega|
| Kevin| Diaz|
|Henrietta| Rivera|
| Matilda| Ellis|
| Isaac| Willis|
| Eric| Cain|
| Hettie| Baldwin|
| Tommy| Wheeler|
| Theresa| Casey|
| Bess| Griffin|
+---------+--------+
only showing top 20 rows
+---------+
| column0|
+---------+
| first|
| Jorge|
| Hunter|
| Esther|
| Dennis|
| Nettie|
| first|
| Jorge|
| Hunter|
| Esther|
| Dennis|
+---------+
only showing top 20 rows