В домашнем каталоге hadoop откройте файл etc / hadoop / hadoop-env.sh и добавьте следующие строки для устранения ошибки:
export HDFS_NAMENODE_USER=root
export HDFS_DATANODE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root
export YARN_RESOURCEMANAGER_USER=root
export YARN_NODEMANAGER_USER=root
Вы можете добавить свое имя пользователя, заменив root в вышеприведенных командах. ]
Вы необходимо определить вспомогательный метод, который разделяет регион на 2 части, и это намного проще представить, используя новую структуру вместо 2D-массива
struct Data {
public int Value;
public bool IsStart;
}
public static IEnumerable<Data> Split(this Region region) {
yield return new Data() { Value = region.StartLocation, IsStart=true};
yield return new Data() { Value = region.EndLocation, IsStart=false};
}
. Затем вы можете использовать следующий запрос LINQ, чтобы разбить их и отсортировать.
List<Region> list = GetTheList();
var query = list
.SelectMany(x => x.Split())
.OrderBy(x => x.Data);
Это решение не подходит для LINQ ни для чего, кроме интеллектуальных упражнений. Цикл foreach
будет таким же быстрым (на самом деле, скорее всего, быстрее), чем любая собранная реализация LINQ.
В качестве примечания, я предполагаю, что вы используете foreach
], а не для
. В противном случае вы можете значительно ускорить свой процесс, переключившись на цикл foreach
.
foreach(Region r in regionList)
{
// add your entries using r
}
будет намного быстрее, чем ..
for(int i = 0; i < regionList.Count; i++)
{
// add your entires using the indexer
}