已成功启动 aws EMR 集群,但任何提交均失败并显示:
19/07/30 08:37:42 ERROR UserData: Error encountered while try to get user data
java.io.IOException: File '/var/aws/emr/userData.json' cannot be read
at com.amazon.ws.emr.hadoop.fs.shaded.org.apache.commons.io.FileUtils.openInputStream(FileUtils.java:296)
at com.amazon.ws.emr.hadoop.fs.shaded.org.apache.commons.io.FileUtils.readFileToString(FileUtils.java:1711)
at com.amazon.ws.emr.hadoop.fs.shaded.org.apache.commons.io.FileUtils.readFileToString(FileUtils.java:1748)
at com.amazon.ws.emr.hadoop.fs.util.UserData.getUserData(UserData.java:62)
at com.amazon.ws.emr.hadoop.fs.util.UserData.<init>(UserData.java:39)
at com.amazon.ws.emr.hadoop.fs.util.UserData.ofDefaultResourceLocations(UserData.java:52)
at com.amazon.ws.emr.hadoop.fs.util.AWSSessionCredentialsProviderFactory.buildSTSClient(AWSSessionCredentialsProviderFactory.java:52)
at com.amazon.ws.emr.hadoop.fs.util.AWSSessionCredentialsProviderFactory.<clinit>(AWSSessionCredentialsProviderFactory.java:17)
at com.amazon.ws.emr.hadoop.fs.rolemapping.DefaultS3CredentialsResolver.resolve(DefaultS3CredentialsResolver.java:22)
at com.amazon.ws.emr.hadoop.fs.guice.CredentialsProviderOverrider.override(CredentialsProviderOverrider.java:25)
at com.amazon.ws.emr.hadoop.fs.s3.lite.executor.GlobalS3Executor.executeOverriders(GlobalS3Executor.java:130)
at com.amazon.ws.emr.hadoop.fs.s3.lite.executor.GlobalS3Executor.execute(GlobalS3Executor.java:86)
at com.amazon.ws.emr.hadoop.fs.s3.lite.AmazonS3LiteClient.invoke(AmazonS3LiteClient.java:184)
at com.amazon.ws.emr.hadoop.fs.s3.lite.AmazonS3LiteClient.doesBucketExist(AmazonS3LiteClient.java:90)
at com.amazon.ws.emr.hadoop.fs.s3n.Jets3tNativeFileSystemStore.ensureBucketExists(Jets3tNativeFileSystemStore.java:139)
at com.amazon.ws.emr.hadoop.fs.s3n.Jets3tNativeFileSystemStore.initialize(Jets3tNativeFileSystemStore.java:116)
at com.amazon.ws.emr.hadoop.fs.s3n.S3NativeFileSystem.initialize(S3NativeFileSystem.java:508)
at com.amazon.ws.emr.hadoop.fs.EmrFileSystem.initialize(EmrFileSystem.java:111)
at org.apache.hadoop.fs.FileSystem.createFileSystem(FileSystem.java:2859)
at org.apache.hadoop.fs.FileSystem.access$200(FileSystem.java:99)
at org.apache.hadoop.fs.FileSystem$Cache.getInternal(FileSystem.java:2896)
at org.apache.hadoop.fs.FileSystem$Cache.get(FileSystem.java:2878)
at org.apache.hadoop.fs.FileSystem.get(FileSystem.java:392)
at org.apache.spark.deploy.DependencyUtils$.org$apache$spark$deploy$DependencyUtils$$resolveGlobPath(DependencyUtils.scala:190)
at org.apache.spark.deploy.DependencyUtils$$anonfun$resolveGlobPaths$2.apply(DependencyUtils.scala:146)
at org.apache.spark.deploy.DependencyUtils$$anonfun$resolveGlobPaths$2.apply(DependencyUtils.scala:144)
at scala.collection.TraversableLike$$anonfun$flatMap$1.apply(TraversableLike.scala:241)
at scala.collection.TraversableLike$$anonfun$flatMap$1.apply(TraversableLike.scala:241)
at scala.collection.IndexedSeqOptimized$class.foreach(IndexedSeqOptimized.scala:33) …
Run Code Online (Sandbox Code Playgroud) 我有火花流应用程序,它消耗kafka消息.我想要处理所有最后10分钟的消息.看起来有两种方法可以完成工作:
val ssc = new StreamingContext(new SparkConf(), Minutes(10))
val dstream = ....
Run Code Online (Sandbox Code Playgroud)
和
val ssc = new StreamingContext(new SparkConf(), Seconds(1))
val dstream = ....
dstream.window(Minutes(10), Minutes(10))
Run Code Online (Sandbox Code Playgroud)
我只想澄清它们之间是否有任何性能差异
我需要一些用于Java的缓存解决方案。我需要存储1小时逐出的1 db表的内容,然后清除所有值并再次填充表中的数据。
我一直在研究番石榴缓存,但似乎它未在CacheLoader中提供所需的api 。方法CacheLoader.load仅填充1个值(因此我想同时填充所有值),并且CacheLoader.loadAll应该由getAll调用触发,在我的情况下应避免这种情况。
这是我想要的伪代码:
Cache<String, String> cache = CacheBuilder.newBuilder()
.expireAfterWrite(1, TimeUnit.HOURS)
.build(new CacheLoader<String, String> {
public Map<String, String> loadAll() {
// some logic for retrieving data from db
}
})
...
String value = cache.get(key)
Run Code Online (Sandbox Code Playgroud)
可能与此重复。但是它看起来很旧,并且不包含所需的解决方案。
另外,我有一个不同的用例,在某些用例中,应从Web服务器或文件系统上的文件中检索数据,因此我不想依赖任何数据库特定的方法作为休眠缓存或某种类型的东西。
谢谢!
我正在尝试在我的 ec2 实例上设置 elasticsearch s3 快照。它失败并出现以下错误:
nested: NotSerializableExceptionWrapper[sdk_client_exception: The requested metadata is not found at http://169.254.169.254/latest/meta-data/iam/security-credentials/
Run Code Online (Sandbox Code Playgroud)
如果我从该 ec2 实例查询元数据服务器,它会响应以下内容:
$ curl http://169.254.169.254/latest/meta-data/
ami-id
ami-launch-index
ami-manifest-path
block-device-mapping/
events/
hostname
identity-credentials/
instance-action
instance-id
instance-type
local-hostname
local-ipv4
mac
metrics/
network/
placement/
profile
public-keys/
reservation-id
security-groups
services/
Run Code Online (Sandbox Code Playgroud)
所以没有iam部分。
如何使 iam 部分可用于从 ec2 实例进行查询?
java中是否有任何实用程序允许检查对象相等性而无需覆盖equals?由于某些原因,我不想为我的类提供 equals 方法。我的单元测试中需要类似SomeUtils.equals(a,b)的东西来比较所有对象字段(我猜是通过反射)。
我刚刚发现scala(我在2.12上)为不可变列表和可变列表提供了完全不同的foldRight实现.
不可变列表(List.scala):
override def foldRight[B](z: B)(op: (A, B) => B): B =
reverse.foldLeft(z)((right, left) => op(left, right))
Run Code Online (Sandbox Code Playgroud)
可变列表(LinearSeqOptimized.scala):
def foldRight[B](z: B)(@deprecatedName('f) op: (A, B) => B): B =
if (this.isEmpty) z
else op(head, tail.foldRight(z)(op))
Run Code Online (Sandbox Code Playgroud)
现在我只是好奇.能否请您解释一下为什么实施方式如此不同?
假设我有这样的数据集:
| item | event | timestamp | user |
|:-----------|------------:|:---------:|:---------:|
| titanic | view | 1 | 1 |
| titanic | add to bag | 2 | 1 |
| titanic | close | 3 | 1 |
| avatar | view | 6 | 1 |
| avatar | close | 10 | 1 |
| titanic | view | 20 | 1 |
| titanic | purchase | 30 | 1 |
Run Code Online (Sandbox Code Playgroud)
等等。我需要为每个用户计算 sessionId 以获取与特定项目相对应的连续事件。
所以对于那个特定的数据输出应该如下: …
我从Spark Aggregator获得了List [Character]的输出
case class Character(name: String, secondName: String, faculty: String)
val charColumn = HPAggregator.toColumn
val resultDF = someDF.select(charColumn)
Run Code Online (Sandbox Code Playgroud)
所以我的数据框看起来像:
+-----------------------------------------------+
| value |
+-----------------------------------------------+
|[[harry, potter, gryffindor],[ron, weasley ... |
+-----------------------------------------------+
Run Code Online (Sandbox Code Playgroud)
现在我想将其转换为
+----------------------------------+
| name | second_name | faculty |
+----------------------------------+
| harry | potter | gryffindor |
| ron | weasley | gryffindor |
Run Code Online (Sandbox Code Playgroud)
我该怎么做呢?
我在 scala 上编写应用程序,并使用 slick for db 运行框架。我想从数据库端的表中选择随机行。像这样的东西:
val items = TableQuery[ItemTable]
val db = Database.forConfig("db.default")
def getRandom: Item = ???
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?我当前的实现是选择全部作为列表并在 scala 代码上随机选择。
apache-spark ×5
java ×2
scala ×2
amazon-ec2 ×1
amazon-emr ×1
amazon-s3 ×1
equals ×1
guava ×1
ignite ×1
slick ×1
sql ×1
unit-testing ×1