GCS에서 줄 바꿈으로 구분 된 JSON 파일을 gzip으로 압축했습니다. Dataflow를 사용하여로드하고 BigQuery에 저장하려고합니다.Google Cloud Dataflow (Apache Beam) - 항상 gzip 파일의 첫 번째 줄을 구문 분석하지 못합니다.
그러나 항상 파일의 첫 번째 줄에서 JSON을 구문 분석하지 못합니다. 나는 파일 내용을 확인하면 내가 잭슨을 사용하고 로그 그러나
Failed to parse JSON, com.fasterxml.jackson.core.JsonParseException:
Unexpected character ('_' (code 95)):
Expected space separating root-level values at
[Source: (String)"40085_telemetry_2015-09-09.log0000664000076600007660000011300712574251007016553
0ustar xxxadminxxxadmin"[truncated 142 chars];
line: 1, column: 7
을 말한다, 위의 같은 어떤 문자열이 없었다. 확실히 유효한 JSON 문자열입니다. Dataflow가 처리를 시작할 때 위의 문자열이 첫 번째 줄의 시작 부분 앞에 추가됩니다.
이유가 궁금하십니까? Apache Beam Java SDK 버전 2.1.0을 사용합니다. 아래
내 코드 showns는 :
static class ReadFile extends PTransform<PInput, PCollection<String>> {
private static final long serialVersionUID = 1L;
private ValueProvider<String> files;
public ReadFile(ValueProvider<String> env, ValueProvider<String> productName, ValueProvider<String> files,
ValueProvider<String> deadLetterId) {
this.files = files;
}
@Override
public PCollection<String> expand(PInput input) {
Pipeline p = input.getPipeline();
// this pipeline supports both wildcard and comma separated
String inputFile = files.get();
if (inputFile.contains("*")) {
return p.apply("Read from GCS with wildcard prefix",
TextIO.read().from(inputFile).withCompressionType(CompressionType.GZIP));
}
String[] targetFiles = inputFile.split(",");
PCollectionList<String> rowsList = PCollectionList.empty(p);
for (String targetFile : targetFiles) {
PCollection<String> fileLines = p.apply("Read (" + targetFile + ")",
TextIO.read().from(targetFile).withCompressionType(CompressionType.GZIP));
rowsList = rowsList.and(fileLines);
}
PCollection<String> allRows = rowsList.apply("Flatten rows", Flatten.<String>pCollections());
return allRows;
}
}
Java 또는 Python SDK를 사용하고 있습니까? 파이프 라인의이 부분을 구성하는 코드를 보여줄 수 있습니까? 이 파일을 "gzip -d"를 사용하여 압축 해제 할 수 있습니까? 파일 확장자 란 무엇입니까? – jkff
답장을 보내 주셔서 감사합니다. @jkff. 나는 정보를 추가했지만, 그 동안에는 "gzip -d"로 파일을 압축 해제 할 때 문자열이 첫 번째 줄에 붙습니다. (Mac의 Archive Utility를 사용하면 발생하지 않았습니다.) –
@jkff "gzip -d"로 보이는 것은 정확하고이 문자열은 실제로 존재하지만 Mac Archive Utility는 어떻게 든 그것을 친절하게 생략합니다. 죄송합니다. 데이터가 문제가 될 수 있습니다. ( –