You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tinkerpop.apache.org by "Daniel Kuppitz (JIRA)" <ji...@apache.org> on 2016/06/09 08:04:20 UTC
[jira] [Commented] (TINKERPOP-1331) HADOOP_GREMLIN_LIBS can only
point to local file system
[ https://issues.apache.org/jira/browse/TINKERPOP-1331?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15322122#comment-15322122 ]
Daniel Kuppitz commented on TINKERPOP-1331:
-------------------------------------------
My proposal for {{loadsJars}}:
{code}
private final static Pattern PATH_PATTERN = Pattern.compile("([^:]|://)+");
...
private void loadJars(final JavaSparkContext sparkContext, final Configuration hadoopConfiguration) {
if (hadoopConfiguration.getBoolean(Constants.GREMLIN_HADOOP_JARS_IN_DISTRIBUTED_CACHE, true)) {
final String hadoopGremlinLibs = null == System.getProperty(Constants.HADOOP_GREMLIN_LIBS) ? System.getenv(Constants.HADOOP_GREMLIN_LIBS) : System.getProperty(Constants.HADOOP_GREMLIN_LIBS);
if (null == hadoopGremlinLibs)
this.logger.warn(Constants.HADOOP_GREMLIN_LIBS + " is not set -- proceeding regardless");
else {
try {
final Matcher matcher = PATH_PATTERN.matcher(hadoopGremlinLibs);
while (matcher.find()) {
final String path = matcher.group();
FileSystem fs;
try {
final URI uri = new URI(path);
fs = FileSystem.get(uri, hadoopConfiguration);
} catch (URISyntaxException e) {
fs = FileSystem.get(hadoopConfiguration);
}
final File file = AbstractHadoopGraphComputer.copyDirectoryIfNonExistent(fs, path);
if (file.exists())
Stream.of(file.listFiles()).filter(f -> f.getName().endsWith(Constants.DOT_JAR)).forEach(f -> sparkContext.addJar(f.getAbsolutePath()));
else
this.logger.warn(path + " does not reference a valid directory -- proceeding regardless");
}
} catch (IOException e) {
throw new IllegalStateException(e.getMessage(), e);
}
}
}
}
{code}
> HADOOP_GREMLIN_LIBS can only point to local file system
> -------------------------------------------------------
>
> Key: TINKERPOP-1331
> URL: https://issues.apache.org/jira/browse/TINKERPOP-1331
> Project: TinkerPop
> Issue Type: Improvement
> Components: hadoop
> Affects Versions: 3.2.0-incubating, 3.1.2-incubating
> Reporter: Daniel Kuppitz
>
> These two lines in {{SparkGraphComputer}} assume that {{HADOOP_GREMLIN_LIBS}} will only contain local file system references (although it seems that the rest of the code could handle DFS references):
> {code}
> final String[] paths = hadoopGremlinLocalLibs.split(":");
> final FileSystem fs = FileSystem.get(hadoopConfiguration);
> {code}
> If, for example, {{HADOOP_GREMLIN_LIBS}} would be set to {{hdfs:///spark-gremlin-libs:/foo/bar}}, the {{split(":")}} call would obviously separate the file system scheme ({{hdfs://}}) from the path ({{/spark-gremlin-libs}}).
> Next, {{FileSystem.get(hadoopConfiguration)}} will always only return a reference to the {{FileSystem}} that is defined as the default file system.
> The same is probably true for {{GiraphGraphComputer}}.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)