我正在嘗試設(shè)置對(duì) HDFS 的調(diào)用以使用 FileSystem 從中獲取文件:FileSystem fs = new FileSystem.get(new URI.create(uri), conf);但是我得到了這兩個(gè)錯(cuò)誤,即使我調(diào)用了所有的庫(kù) Error:(46, 39) java: cannot find symbol symbol: class get location: class org.apache.hadoop.fs.FileSystem Error:(46, 47) java: cannot find symbol symbol: method create(java.lang.String) location: class org.apache.commons.httpclient.URI這適用于 hadoop 2.7.7 版本。我已經(jīng)嘗試導(dǎo)入孔庫(kù) org.apache.hadoop.fs.*; ,但仍然是該方法get并且create當(dāng)我嘗試在以下行中使用它們時(shí)不存在: FileSystem fs = new FileSystem.get(URI.create(usi), conf)import org.apache.commons.httpclient.URI;import org.apache.hadoop.conf.Configuration;import org.apache.hadoop.fs.*;import org.apache.hadoop.fs.Path;import org.apache.hadoop.io.IOUtils; public class Test { public static void main(String []args) { String uri = "hdfs://localhost:9000/data.json"; Configuration conf = new Configuration(); //cannot find symbol get //Cannot find symbol create FileSystem fs = new FileSystem.get(new URI.create(uri), conf); InputStream in = null; try { in = fs.open(new Path(uri)); IOUtils.copyBytes(in, System.out, 4096, false); } catch (IOException e) { e.printStackTrace(); } finally { IOUtils.closeStream(in); } }}這是我的 POM.xml 文件: <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.boeing.bedl</groupId><artifactId>IngestionData</artifactId><version>1.0-SNAPSHOT</version><dependencies> <dependency> <groupId>org.apache.hadoop</groupId> <artifactId>hadoop-common</artifactId> <version>2.7.7</version> </dependency> <dependency> <groupId>org.apache.hadoop</groupId> <artifactId>hadoop-yarn-common</artifactId> <version>2.7.7</version> </dependency>
2 回答

猛跑小豬
TA貢獻(xiàn)1858條經(jīng)驗(yàn) 獲得超8個(gè)贊
我會(huì)說(shuō)問(wèn)題是你已經(jīng)導(dǎo)入import org.apache.commons.httpclient.URI;而不是java.net.URI
這就是為什么您會(huì)因?yàn)槿鄙賘ava.net.URI 的一部分的.create方法而收到錯(cuò)誤,并且您會(huì)在.get方法上收到錯(cuò)誤,因?yàn)槟鷤鬟f了錯(cuò)誤類型的 URI。
(我猜想一些 IDE 的自動(dòng)導(dǎo)入?:))

當(dāng)年話下
TA貢獻(xiàn)1890條經(jīng)驗(yàn) 獲得超9個(gè)贊
你有兩個(gè)問(wèn)題。根據(jù)@Veselin Davidov 的回答,您必須將導(dǎo)入更改為java.net.URI
:
import org.apache.commons.httpclient.URI;
至
import java.net.URI;
第二種,你同時(shí)使用 new 操作符和靜態(tài)工廠方法:
FileSystem fs = new FileSystem.get(new URI.create(uri), conf);
所以你必須改用工廠:
FileSystem fs = FileSystem.get(URI.create(uri), conf);
添加回答
舉報(bào)
0/150
提交
取消